多线程Lock锁
在JDK1.5以后,在并发包(java.util.concurrent)里面添加包locks,并提供了Lock接口,用于与 synchronized 类似的锁功能,不同的是Lock需要手动开启锁和释放锁。 为什么要用Lock锁? 尝试非阻塞的获取锁 获取锁的过程可以被中断 超时获取锁 Lock锁的实现类图 Lock锁的常用API lock() :加锁 lockInterruptibly() :可中断 tryLock() :尝试非阻塞的获取锁 unlock() :释放锁 public class AttemptLocking { private ReentrantLock lock = new ReentrantLock(); public void untimed() { boolean captured = lock.tryLock(); try { System.out.println("tryLock(): " + captured); } finally { if(captured) lock.unlock(); } } public void timed() { boolean captured = false; try { captured = lock.tryLock(2, TimeUnit.SECONDS); } catch