`
MouseLearnJava
  • 浏览: 459862 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
本文介绍Exchanger工具类, 然后采用Exchanger给出一个两个线程交换数值的简单实例。 1. Exchanger介绍 /** * A synchronization point at which two threads can exchange objects. * Each thread presents some object on entry to the {@link #exchange * exchange} method, and receives the object presented by the other * thread on return ...
本文将介绍用来控制资源同时访问个数的Semaphore工具类, 然后采用Semaphore给出一个泊车的实例,最后给出Semaphore和CountDownLatch的几点比较. 1. Semaphore工具类介绍 /** * A counting semaphore. Conceptually, a semaphore maintains a set of * permits. Each {@link #acquire} blocks if necessary until a permit is * available, and then takes it. Each { ...
在本篇博文中,将给出一个实例去验证volatile修饰的变量并不能保证其数据同步. Java内存模型规定了所有变量都存储在主内存中,每条线程都有自己的工作内存,线程的工作内存保存了被该线程使用到变量的主内存副本拷贝,线程 ...
以前在<<编写高质量代码-改善Java程序的151个建议>>一书中看到有一节的标题是“CyclicBarrier让多线程齐步走”,觉得这标题挺不错的,所以在写这篇博文的时候也采用了这个名字。 本文首先会介绍CyclicBarrier辅助工具类,其次将用CyclicBarrier工具类来完成一个实例,最后将给出CyclicBarrier和CountDownLatch的几点比较。 之前关于CountDownLatch的博文,请参考如下链接: Java并发编程: 使用CountDownLatch协调子线程 - http://mouselearnjava.iteye.com ...
本文将介绍CountDownLatch工具类,并采用这个工具类给出一个实例。 1. CountDownLatch工具类介绍 CountDownLatch是一个同步工具类,它允许一个或多个线程处于等待状态直到在其它线程中运行的一组操作完成为止。CountDownLatch用一个给定的计数来实现初始化。Await方法会一直处于阻塞状态,直到countDown方法调用而使当前计数达到零。当计数为零之后,所有处于等待的线程将被释放,await的任何后续调用将立即返回。这种现象只出现一次,计数是不能被重置的。如果你需要一个可以重置计数的版本,需要考虑使用CyclicBarrie. 上面的介绍来自于C ...
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。运用该框架能够很好的将任务分成一个个的子任务,使并发编程变得方便 ...
  开源中国博客地址 == 》   【开源中国--博客地址】https://my.oschina.net/wangmengjun/   因为比较喜欢,开源中国博客的导航,如  
本文给出一个将日期格式设置成当天最小和最大值的例子。这个在如下的场景可以用到。   商品上下架场景:   前台选择日期的时候一般按照年月日来选择,假设这些商品需要在指定当天上架或者下架,我们一般都会写一个JOB来实现这些商品自动上下架过程。这个时候,商品上架的日期可以设置成当天最小值,而商品下架的日期可以使用当天的最大值。   下面我们就来简单完成这个功能。注:如下使用的DateUtils类来自common-lang包 将日期转换成当天最小值     import java.util.Calendar; import java.util.Date; import org ...
使用maven创建web工程,服务器选择了Tomcat 8,而servlet的版本采用的是2.5.   <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency>   启动Tomcat 8,转发到jsp时出现异常信息:   getDispatcherType() is undefi ...
面向对象语言的一个强大的特性是多态,它可以用来在代码中移除if/else语句或者switch-case语句块。没有条件的代码很容易阅读,但有些地方你不得不添加if/else代码块,比如工厂类。   相信你曾经看到过某个工厂类中的if/else变得越来越多。在这篇博文中,将共享几个可以在工厂类中移除if/else语句的方法:   会以下面的代码片段为例:   public static Validator newInstance(String validatorType) { if ("INT".equals(validatorType)) ...
本文给出100道Java编程练手的程序。 列表如下: 面试编程 写一个程序,去除有序数组中的重复数字 编写一个程序使得两个线程陷入死锁 使用递归算法反转字符串 合并两个有序数组
本文将给出三种实现数组复制的方法 (以复制整数数组为例)。 方法一 : 循环遍历赋值达到复制数组的效果 帮助     /**  * 循环遍历赋值达到复制数组的效果  
尽管Java提供了一个类ava.io.File用于文件的操作,但是该类不包括文件的复制操作。但是,复制文件是平时文件操作中一个重要的功能,本文给出四种比较流行的文件复制方法。 1. 使用FileStream private static void copyFileUsingFileStreams(File source, File dest) throws IOException { InputStream input = null; OutputStream output = null; try { input = new FileInp ...
本篇博文将给大家带来几个判断一个字符串中的字符是否都只出现一次的方法。 方法一: 首先将字符串转换成字符数组(char[]), 循环迭代char数组,对于每一个字符c,如果其第一次出现的索引和最后一个出现的索引是不一样的,那么我们可以认为该元素出现多次。 public static boolean isUniqueChars(String str) { char[] chars = str.toCharArray(); for (char c : chars) { if (str.indexOf(c) != str.lastIndexOf(c)) { ...
正则表达式能够用于判断一个数是否为素数,这个以前完全没有想过。 本文将给出一个使用正则判断素数的方法,该正则表达式来源于网页http://stackoverflow.com/questions/2795065/how-to-determine-if-a-number-is-a-prime-with-regex正则表达式为.{0,1}|(.{2,})\\1+ 正则含义 .{0,1} ### The first part of the alternation matches String of length 0 or 1 (NOT prime b ...
Global site tag (gtag.js) - Google Analytics