Java--自旋锁

自旋锁顾名思义就是自己在那边打转,就是在不断循环,等待合适的条件然后进入临界区进行操作。

举个例子好解释:

当前存在线程A和线程B,线程A获取到锁之后,那么此时线程B再想获取时,需要等待。假设此时线程之间的竞争不是很激烈,而处理器阻塞一个线程引起的线程上下文之间的切换的代价高于等待资源的情况下,那么线程B可以不放弃CPU的时间片,而是在原地等待,直到获取到锁,进入临界区。

带来的问题:

1.首先就是线程B不去切换了,带来了的问题就是可能长时间占用CPU的时间,如果自旋过多,肯定CPU承受不住,考虑到的解决方案就是增加一个时间判断,如果超过这个时间,就放弃CPU片进行阻塞。

2.死锁问题,自旋的死锁可能出现在哪边?当然是自己调用自己的时候,第一次自旋获取到锁了,然后第二次再执行时发现锁被占了,但是它傻逼的不知道是被自己占了,只能干等。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值