CAS问题

来源:7-4 本章总结_

Sweet2021

2020-01-04

图片描述
老师,这里说“自旋时间过长”是什么意思?“自旋”又是啥意思?

写回答

1回答

悟空

2020-01-04

“自旋”可以理解为“自我旋转”,这里的“旋转”指“循环”,比如 while 循环或者 for 循环。“自旋”就是自己在这里不停地循环,直到目标达成。而不像普通的锁那样,如果获取不到锁就进入阻塞。

CAS利用自旋来不停的尝试,这就是自旋锁的原理,关于自旋锁在下一个章节,也就是“锁”的这个章节会有详细介绍。

自旋锁是有缺点的。它最大的缺点就在于虽然避免了线程切换的开销,但是它在避免线程切换开销的同时也带来了新的开销,因为它需要不停得去尝试获取锁。如果这把锁一直不能被释放,那么这种尝试只是无用的尝试,会白白浪费处理器资源。也就是说,虽然一开始自旋锁的开销低于线程切换,但是随着时间的增加,这种开销也是水涨船高,后期甚至会超过线程切换的开销,得不偿失。这同样也是CAS的缺点。

0
1
Sweet2021
非常感谢!
2020-01-04
共1条回复

深度解密Java并发工具,精通JUC,成为并发多面手

JUC全方位讲解,构建并发工具类知识体系

1599 学习 · 573 问题

查看课程

相似问题

CAS ABA问题

回答 1

cas问题

回答 1

CAS与自旋

回答 1