类别
|
synchronized
|
Lock
|
存在层次
|
Java关键字,属于原生语法层面 需要jvm实现
|
而Lock它是JDK 1.5之后提供的API层面的互斥锁,需要lock()和unlock()方法配合try/finally语句块来完成
|
锁的释放
|
1.以获取锁的线程执行完同步代码块,释放锁
2.线程执行发生异常,jvm会让线程释放锁
|
在finally必须释放锁,不然容易造成线程死锁
|
锁的获取
|
假设A线程获得锁,B线程等待,如果A线程阻塞,B线程会一直等待
|
分情况而定,Lock有多个锁获取方式,可以尝试获取锁,线程可以不用一直等待。 |
锁的状态
|
无法判断
|
可以判断
|
锁类型
|
可重入 不可中断 非公平
|
可重入 可中断 可
|
synchronized与(ReentrantLock)Lock的对比区别
最新推荐文章于 2022-07-07 00:09:20 发布
本文探讨了synchronized与ReentrantLock在用法、性能和用途上的区别,指出两者在一般场景下相当,但在复杂同步需求时建议使用ReentrantLock。
摘要由CSDN通过智能技术生成