Java中自旋锁

自旋锁

1.什么是自旋锁?

当一个线程需要在获取锁的时候,此时正好有其他线程占用着锁,那么此时该线程将会进入循环等待模式,直到成功获取到锁才会退出循环,因此称为自旋锁。

2.什么时候用到自旋锁?自旋锁的适用场景?

          1)单核处理器

          2)多核处理器

3.自旋锁的优缺点?

自旋锁可以避免上下文切换,但是由于获取到锁的时间不确定,当获取锁需要时间太长的时候,自旋锁的死循环等待模式会造成CPU浪费,导致性能缓慢。

4.自旋锁的特点?

         1)被自旋锁保护的临界区代码执行时不能睡眠。单核处理器下,获取到锁的线程睡眠,若恰好此时CPU调度的另一个执行线程也需要获取这个锁,则会造成死锁;多核处理器下,若想获取锁的线程在同一个处理器下,同样会造成死锁,若位于另外的处理器,则会长时间占用CPU等待睡眠的线程释放锁,从而浪费CPU资源。

       2)被自旋锁保护的临界区代码执行时不能被其他中断打断。

       3)被自旋锁保护的临界区代码在执行时,内核不能被抢占。

更过锁类型知识可以查看文档:https://www.cnblogs.com/qifengshi/p/6831055.html

猜你喜欢

转载自blog.csdn.net/Sunshine_2211468152/article/details/87916824