目录
自旋锁(spinlock)
自旋锁指尝试获取锁的线程获取不到不会立即阻塞,而是采用循环的方式去尝试获取锁。
这样做的好处是减少了线程频繁切换引起的性能损耗,但缺点是会增加cpu占用资源的时间。
自旋锁1.6以后默认开启,自旋次数默认是10次,它会记录上次是多久自旋后成功
我们在cas遇见过自旋锁,回顾下。CAS使用了“自旋锁+赋新值”的方式实现了比较并交换
在自旋锁的第一行代码中有var5=xxx,这是为了当第一次比较失败时,让期望值获取最新主存的值。
比较期望值和主存值的目的是为了每次工作线程把新值写给主存时,新值都是用最新的主存值计算而来的。


本文介绍了Java中的自旋锁机制,详细讲解了自旋锁的概念,即当线程尝试获取锁未成功时,会循环尝试而非立即阻塞,以此减少线程切换带来的开销。同时,文章通过一个简单的自定义自旋锁的例子帮助读者理解自旋锁的工作原理,展示了如何在多线程场景下使用自旋锁来控制并发访问。
最低0.47元/天 解锁文章
170万+





