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