- 博客(5)
- 收藏
- 关注
原创 synchronized(4)-轻量级锁、自旋锁、重量级锁
【总结】多线程竞争锁对象时,首先会有一个线程抢到锁执行同步块,其他线程会自旋获取锁,如果自旋获取不到会进入ContentionList队列,当Owner线程unlock状态时,会将ContentionList尾部的一些线程放入EntryList,并且指定其中一个为OnDeck线程,该线程可以和正在竞争锁的线程一起竞争锁,OnDeck线程会一直等到竞争到锁,成为Owner线程。【轻量级锁总结】轻量级锁是jdk1.6引入的线程优化,当锁对象使用的是轻量级锁时,说明当前同步块。,不需要上升到操作系统级别的阻塞。
2024-07-01 20:20:34
1172
原创 synchronsized(3)-偏向撤销导致的问题及对应解决方案
在真正理解偏向撤销前需要是两码事:【撤销】:多线程竞争导致不能再使用偏向模式的时候,主要是告知这个锁对象不能再使用偏向模式。【释放】:对应就是 synchronized 方法的推出或 synchroniezd 块的结束。从偏向状态撤回原有的状态,也就是将 markword 的第 3 位(是否偏向撤销)的值,从 1 变回 0 (1代表偏向,0代表非偏向)。1、如果只是⼀个线程获取锁,再加上“偏⼼”的机制,是没有理由撤销偏向的,所以偏向撤销只能发⽣在有竞争的情况下。
2024-06-30 20:39:19
1015
1
原创 synchronized(2)-偏向锁
一、偏向锁简介Java偏向锁是Java6引⼊的⼀项多线程优化。顾名思义,它会偏向于第⼀个访问锁对象的线程,如果同步锁只有⼀个线程访问,则线程是不需要触发同步的,这种情况下,就会给该线程加⼀个偏向锁;如果在运⾏过程中,遇到了其他线程抢占锁,则持有偏向锁的线程会被挂起,JVM会消除它身上的偏向锁,将锁升级到轻量级锁,然后再唤醒原持有偏向锁的线程。二、偏向锁的场景通过上述简介可以看出,
2024-06-30 15:51:24
567
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人