Java中自旋鎖

自旋鎖

1.什麼是自旋鎖?

當一個線程需要在獲取鎖的時候,此時正好有其他線程佔用着鎖,那麼此時該線程將會進入循環等待模式,直到成功獲取到鎖纔會退出循環,因此稱爲自旋鎖。

2.什麼時候用到自旋鎖?自旋鎖的適用場景?

          1)單核處理器

          2)多核處理器

3.自旋鎖的優缺點?

自旋鎖可以避免上下文切換,但是由於獲取到鎖的時間不確定,當獲取鎖需要時間太長的時候,自旋鎖的死循環等待模式會造成CPU浪費,導致性能緩慢。

4.自旋鎖的特點?

         1)被自旋鎖保護的臨界區代碼執行時不能睡眠。單核處理器下,獲取到鎖的線程睡眠,若恰好此時CPU調度的另一個執行線程也需要獲取這個鎖,則會造成死鎖;多核處理器下,若想獲取鎖的線程在同一個處理器下,同樣會造成死鎖,若位於另外的處理器,則會長時間佔用CPU等待睡眠的線程釋放鎖,從而浪費CPU資源。

       2)被自旋鎖保護的臨界區代碼執行時不能被其他中斷打斷。

       3)被自旋鎖保護的臨界區代碼在執行時,內核不能被搶佔。

更過鎖類型知識可以查看文檔:https://www.cnblogs.com/qifengshi/p/6831055.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章