第一章:简介 程序清单1-1非线程安全的数值序列生成器 import net.jcip.annotations.NotThreadSafe; @NotThreadSafe public class UnsafeSequence { private int value; /*返回一个唯一的数值*/ public int getValue() { return value++; //三个操作:读取,加一,赋值. 多线程并发操作value可能导致步骤被打乱 } } 程序清单1-2 线程安全的数值序列生…
前篇博客LZ已经分析了ReentrantLock的lock()实现过程,我们了解到lock实现机制有公平锁和非公平锁,两者的主要区别在于公平锁要按照CLH队列等待获取锁,而非公平锁无视CLH队列直接获取锁.但是对于unlock()而已,它是不分为公平锁和非公平锁的. public void unlock() { sync.release(1); } public final boolean release(int arg) { if (tryRelease(arg)) { Node h = he…