Lock和synchronized的区别
所属分类 java
浏览量 1373
synchronized 关键字 内置锁 自动获取释放 jvm实现 抛异常时会自动释放锁
monitor对象 monitorenter和monitorexit指令
LOCK需要手工获取释放 lock() unlock()
LOCK 基于 AQS AbstractQueuedSynchronizer 实现
lock是jdk 1.5后新增的
ReentrantLock ReentrantReadWriteLock
Lock 可实现 读写锁 ReentrantReadWriteLock
Lock支持公平锁
synchronized 不支持 中断
Lock.lockInterruptibly()
synchronized 不支持 超时等待
Lock boolean tryLock(long time, TimeUnit unit) throws InterruptedException
lock 可实现尝试获取锁 tryLock()
等待通知机制
synchronized 与 Object wait notify notifyAll 配合使用
lock 结合 Condition 使用
await signal signalAll
boolean awaitUntil(Date deadline) throws InterruptedException;
awaitUntil 是 Condition 特有的
lock 可以绑定多个 Condition
上一篇
下一篇
jdk自带工具使用
找出最耗CPU的java线程和代码
线上问题排查常用命令
java并发机制的底层实现原理
域名查询命令
java线程状态