1、自旋锁,自旋,jvm默认是10次,由jvm自己控制,for去争取锁
2、阻塞锁 被阻塞的线程,不会争夺锁
3、可重入锁,多次进入改锁的域
4、读写锁
5、互斥锁,锁本身就是互斥的
6、悲观锁,不相信这里是安全的,必须全部上锁
7、乐观锁,相信这里是安全的
8、公平锁,有优先级的锁
9、非公平锁,无优先级的锁
10、偏向锁,无竞争不锁,有竞争挂起,转为轻量锁
11、对象锁,锁住对象
12、线程锁
13、锁粗化 ,多锁变成一个,自己处理
14、轻量级锁 ,CAS实现
15、锁消除 ,偏向锁就是锁消除的一种
16、锁膨胀 , jvm实现,锁粗化
17、信号量,使用阻塞锁实现的一种策略
18、排他锁(不包含),X锁,若事务T对数据对象A加上x锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A

本文深入探讨Java中的多种锁机制,包括自旋锁、阻塞锁、可重入锁等,并解释了它们的工作原理及应用场景。此外,还介绍了锁的升级过程如轻量级锁、偏向锁到重量级锁的变化,以及读写锁、悲观锁和乐观锁的区别。
679

被折叠的 条评论
为什么被折叠?



