回复
synchronized和lock的区别
jowvid
发布于 2020-9-22 11:40
浏览
0收藏
1.结构不同
synchronized是Java关键字是默认提供的
lock是jdk 1.5开始执行的本身是一个接口
2.synchronized隐式锁 lock显式锁
synchronized不需要用户手动去关闭 等到执行结束会自动释放锁
Lock需要手动调用方法释放锁 如果不释放 会出现死锁 通过lock() 获取锁 unlock释放锁
3.唤醒方式的不同
synchronized: 只能唤醒随机一个线程或者全部线程
Lock:可以精准的唤醒锁 可以分组唤醒线程
4.多个线程之间 竞争锁标记时,如果使用的是synchronized没有获取到锁的线程会一直处于阻塞 lock如果长时间线程没有获取到锁标记就不等待了
5.线程中断不同 synchronized不能被中断除非出现异常或者运行结束 lock可以中断 调用超时方法tryLock(时间,时间单位) 还可以调用强制中断方法
6.性能不同
线程之间竞争不激烈 推荐使用synchronized
线程之间竞争激烈 推荐使用Lock
作者:____小明同学i
来源:CSDN
分类
赞
收藏
回复
相关推荐