• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:面试知识点学习6CAS操作

java 搞代码 4年前 (2022-01-27) 29次浏览 已收录 0个评论
文章目录[隐藏]

CAS操作

6.1 CAS操作过程

6.2 CAS带来的问题

6.2.1 ABA问题

6.2.2 自旋节约大量的处理器资源

与线程阻塞相比,自旋会节约大量的处理器资源。这是因为以后线程仍处于运行状况,只不过跑的是无用指令。它冀望在运行无用指令的过程中,锁可能被释放出来。

例如:阻塞相当于熄火停车,自旋状态相当于怠速停车。在十字路口,如果红绿灯期待的工夫十分长,那么熄火绝对省油一些;如果红绿灯的等待时间十分短,怠速停车更适合。

然而,对于JVM来说,它并不能看到红灯的剩余时间,也就没法依据等待时间的长短来抉择是自旋还是阻塞。JVM给出的计划是自适应自旋,依据以往自旋期待时是否获取锁,来动静调整自旋的工夫。即如果在自旋的时候获取到锁,则会减少下一次自旋的工夫,否则就略微减小下一次自旋时长,对于咱们的例子就是:如果之前不熄火期待了绿灯,那么这次不熄火的工夫就长一点;如果之前不熄火没期待绿灯,那么这次不熄火的工夫就短一点。

6.2.3 CAS带来的公平性问题

自旋状态带来另外一个副作用——不偏心的锁机制。处于阻塞状态的线程无奈立即竞争被开释的锁。然而处于自旋状态的线程,则很有可能优先取得这把锁。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:面试知识点学习6CAS操作
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址