Java同步机制

线程同步就是让多个线程按照一定的顺序有序执行。

JVM提供的synchronized
JDK提供的ReentrantLock
(1)选择与对比
性能差不多,除非要使用ReentrantLock的高级功能否则首选synchronized。
ReentrantLock不是所有JDK版本都支持。
因为sync是JVM支持的,而且不用担心没有释放锁而导致的死锁问题。
(2)具体特性分析
1. synchronized
1> 同步一个代码块
同步一个代码块时,作用于同一个对象。两个线程调用同一个对象的同步代码块,这时两个线程就会同步,一个线程进入同步代码块时,另一个线程就会等待。
如果两个线程作用于不同的对象的同步代码,两个线程不需要同步。会进行交叉执行。
2> 同步一个方法
与同步一个代码块作用相同。
3> 同步一个类
同步于一个类时,两个线程作用于不同对象的同步语句,这时两个线程也会进行同步。
4> 同步一个静态方法
和作用于一个类相同。

2. ReentrantLock
等待可中断,当持有锁的线程长期不释放锁的时候,正在等待的线程可以放弃等待,改为处理其他事情。

锁绑定多个条件
ReentrantLock可以同时绑定多个Condition对象。
全部评论
v3 添加synchronized作用
1 回复 分享
发布于 2022-12-10 13:07 陕西
v2 添加ReentrantLock特性
1 回复 分享
发布于 2022-12-10 12:56 陕西

相关推荐

mjasjon:这种trash中厂 简历过筛概率比大厂还低(除阿里系)
投递哔哩哔哩等公司6个岗位
点赞 评论 收藏
分享
码农索隆:我头回见校招简历把个人优势写在最前面的,是我老了吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务