类型 | 原始构成 | 使用方法 | 等待是否可中断 | 加锁是否公平 |
锁绑定多个条件Condition |
synchronized | 关键字,JVM层面(moitorentermonitorexit) | 代码执行完后自动释放锁 | 不可中断 | 非公平锁 | 无 |
ReentrantLock | 具体类,api层面的锁 | 需要用户手动释放锁,用Lock()和unlock()配合try/finally语句块来完成 | 可中断 | 两者都可,默认false即非公平锁 | 实现分组唤醒的线程们,可以精确唤醒,而不是像synchronized要么随机唤醒,要么全部唤醒 |