摘要: JDK1.5引入了Doug Lea大神的concurrent框架,其中AbstractQueuedSynchronizer是concurrent框架的基本,从大神的paper中可以看到1.传统的synchronized不能进行中段,这个不合适2.如果将concurrent重心放在少数竞争下优化锁,而在其他情况下放任缓慢执行的策略是不正确的3.需要可预测的维护效率,即使在同步竞争激烈的情况下,理想中无论多少线程试图通过一个同步点的开销应该是恒定的4.设计的目标是总时间的减少,因为有可能在此之间一个线程可以通过同步点,然后他没有立即执行5.在高吞吐量的基本上,更重要的是线程的公平调度AQS设计思路 阅读全文
posted @ 2012-07-23 19:35 nod0620 阅读(2036) 评论(0) 推荐(2) 编辑
摘要: concurrent包里面有很多Lock的具体实现,其具体的实现都是基于AQS实现的ReentrantLockReentrantLock是可重入的互斥锁,重点是重入和互斥,ReentrantLock 将由最近成功获得锁的线程所持有,当这个线程再次尝试拥有这个Lock时就是重入。互斥就是在某一时间只有一个线程能持有Lock。 public void lock() { sync.lock(); }获得锁方法,Sync是AQS的抽象子类,实现可重入和互斥的大部分功能。在Sync的子类中有FairSync和NonfairSync两种代表公平锁策略和非公平锁策略Sync lock方法留给子类去实现,No 阅读全文
posted @ 2012-07-23 19:33 nod0620 阅读(728) 评论(0) 推荐(0) 编辑