java锁的概念

2018-08-28  本文已影响0人  John13

参考文档
探究分布式并发锁
并发编程-锁的发展和主流分布式锁比较总结
从构建分布式秒杀系统聊聊分布式锁
探索并发编程(六)------Java多线程性能优化
java线程(2)--同步和锁
Java并发编程:Lock
深入理解多线程(一)——Synchronized的实现原理
深入理解多线程(五)—— Java虚拟机的锁优化技术
Java锁Synchronized,对象锁和类锁举例 --值得理解

说明:从资料上看到的锁分类,拿过来整理分享大家看,感谢原创!!

一、锁概念

1、自旋锁 :自旋,jvm默认是10次吧,有jvm自己控制。for去争取锁

2、阻塞锁: 被阻塞的线程,不会争夺锁。

3、可重入锁: 多次进入该锁的域

4、读写锁:

5、互斥锁: 锁本身就是互斥的

6、悲观锁: 不相信,这里会是安全的,必须全部上锁

7、乐观锁: 相信,这里是安全的。

8、公平锁: 有优先级的锁

9、非公平锁: 无优先级的锁

10、偏向锁: 无竞争不锁,有竞争挂起,转为轻量锁

11、对象锁: 锁住对象

12、线程锁:

13、锁粗化: 多锁变成一个,自己处理

14、轻量级锁: CAS 实现

15、锁消除: 偏向锁就是锁消除的一种

16、锁膨胀: jvm实现,锁粗化

17、信号量: 使用阻塞锁 实现的一种策略

二、锁的类别

1. 类锁:
在代码中的方法上加了static和synchronized的锁,或者synchronized(xxx.class)的代码段;

2.对象锁:
在代码中的方法上加了synchronized的锁,或者synchronized(this)的代码段;

3.私有锁:
在类内部声明一个私有属性如private Object lock,在需要加锁的代码段synchronized(lock)。

三、锁的四种状态

jvm系列 (三) ---锁的优化

优化:
自旋锁,锁消除,锁粗化

状态:
从低到高,只能升级不能降级:

上一篇下一篇

猜你喜欢

热点阅读