007. J.U.C 之锁的使用
1. Lock API 1. Locks 包类层次结构 2. Lock 接口 方法签名 描述 void lock(); 获取锁(不死不休) boolean tryLock(); 获取锁(浅尝辄止) boolean tryLock(long time, TimeUnit unit) throws InterruptedException; 获取锁(过时不候) void lockInterruptibly() throws InterruptedException; 获取锁(任人摆布) void unlock(); 释放锁 Condition newCondition(); 结论: lock() 最常用,并且线程不会被中断; lockInterruptibly() 方法一般更昂贵,有的 impl 可能没有实现 lockInterruptibly(),只有真的需要效应中断时,才使用,使用之前看看 impl 对该方法的描述。 public class Demo1_GetLock { // 公平锁 // static Lock lock = new ReentrantLock(true); // 非公平锁 static Lock lock = new ReentrantLock(); public static void main(String[] args) throws