内容来自《Offer 来了》

tryLock、lock和lockInterruptibly的区别如下。

◎ tryLock若有可用锁,则获取该锁并返回true,否则返回false,不会有延迟或等待;tryLock(long timeout, TimeUnit unit)可以增加时间限制,如果超过了指定的时间还没获得锁,则返回false。

◎ lock 若有可用锁,则获取锁并返回 true,否则会一直等待直到获取可用锁。

◎ 在锁中断时lockInterruptibly会抛出异常,lock不会。