摘要: Semaphore:类java.util.concurrent.Semaphore提供了一个计数信号量,从概念上讲,信号量维护了一个许可集,如有必要,在许可可用前会阻塞每一个acquire(),然后再获取该许可。每个release()添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore只对可用许可的号码进行计数,并采取相应的行动。调用acquire()时无法保持同步锁,因为这会阻止将数据项返回到池中。信号量封装所需的同步,以限制对池的访问,这同维持该池本身一致性所需的同步是分开的。将信号量初始化为1,使得它在使用时最多只有一个可用的许可,从而可用作一个 阅读全文
posted @ 2013-06-15 18:33 丁丁木木 阅读(604) 评论(0) 推荐(0) 编辑
摘要: 在JDK5的并发包中有一个子包为java.concurrent.locks,它下面定义了三个接口Lock,ReadWriteLock,Condition,分别为重入锁,读写锁,锁条件判断LOCK:Lock与java关键字(synchronized)具有相同的功能,但它更加灵活。ReentrantLock作为Lock接口的实现类,被作为Java语言中synchronized功能的替代,它们具有相同的内存意义,相同的锁定,但在争用条件下却有更好的性能,此为它还有synchronized没有提供的其它特性。但就实际应用来说,由于内部锁是内置于Java虚拟机中的,它能够进行优化,因此未来的性能改进.. 阅读全文
posted @ 2013-06-15 17:39 丁丁木木 阅读(5497) 评论(1) 推荐(0) 编辑
摘要: 1 import java.util.Timer; 2 import java.util.TimerTask; 3 /** 4 * 传统定时器技术 new Timer().schedule(TimeTaks()实例,多少秒后执行,第一次执行后每隔多少秒执行一次) 5 * new Timer().schedule(TimeTaks()实例,new Date()固定日期执行,第一次执行后每隔多少秒执行一次) 6 * 如果没有最后一个参数,则定时器里的任务只执行一次。 7 * 更复杂的调试任务可以考虑用调度框架quartz 8 */ 9 public class TimerTest... 阅读全文
posted @ 2013-06-15 15:05 丁丁木木 阅读(349) 评论(0) 推荐(0) 编辑
摘要: Future和FutureTask接口Future<V>表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用get()方法来获取结果,如有必要,计算完成前可以阻塞此方法。取消则由cancel方法来执行,还提供了其他方法,以确定任务是正常完成还是被取消了。一旦计算完成,就不能再取消计算了。如果为了可取消性而使用Future但又不提供可用的结果,则可以声明Future<?>形式类型,并返回null作为底层任务的结果。Future主要定义了5个方法:cancle(boolean myaInterruptIfRunning) 阅读全文
posted @ 2013-06-15 14:49 丁丁木木 阅读(2345) 评论(0) 推荐(0) 编辑