LOCK接口提供了与synchronized关键字类似的同步功能,只是在使用时需要显式地获取和释放锁。虽然它缺少了(通过synchronized块或方法所提供的)隐式获取和释放锁的便捷性,但是却拥有了获取和释放锁的可操作性、可中断的获取锁以及超时获取锁等多种synchronized关键字所不具备的同步特征。LOCK锁的使用:
1 Lock lock = new ReentrantLock(); 2 lock.lock(); 3 try { 4 }finally { 5 lock.unlock(); 6 }
不要将获取锁的过程写在try块中,因为如果在获取锁时发生了异常,会导致锁无故释放。