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

分类
收藏
回复
举报
回复
    相关推荐