首页   快速返回

Lock和synchronized的区别     所属分类 java
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线程状态