四種鎖切換、併發總結

final常亮,讀取對象與讀取值,不能重排序

sychronized會將代碼塊中的變量刷新到內存裏面

sychronized底層是用Monitor

對象頭是對象的hashCode和對象的分代年齡

無所,偏向鎖,輕量鎖,重量鎖

掛起。自旋。

掛起有上下文操作,

自旋沒有切換耗cpu,自旋最大時間,最大次數

自旋鎖,獲取鎖的一種方式

sychronized同步塊四種鎖升級機制優化:

1、如果之後一個線程的時候,只是使用了偏向鎖,將鎖的標誌位改爲00, 這種情況下沒有任何上下文切換,,當發現有線程競爭時候將鎖的標誌位改爲01,這時候成爲了輕量級鎖,輕量級鎖其實也是無鎖化的,用的cas機制,當cas等待的線程自旋到一定時間後仍然沒有獲取鎖,將會升級成爲重量級鎖,線程直接等待,不再自旋,調用的操作系統的monitor Mutex Lock互斥鎖來實現鎖機制

 

 

這些優化提升應用程序的性能

 

AotumicLong

LongAdder優化了AotumicLong,分散熱點,但是隻能保證最終一致性,

 

讀寫鎖StampLock

讀:寫 1000:1,寫鎖可能餓死

此鎖可以不阻塞寫,讀鎖按照讀取版本號的問題來讀取,版本號一致才能讀取,doun li在類裏面寫了例子,也可以按照阻塞寫來

 

completeableFuture用法

流式處理

 

高性能隊列:

 

lamada表達式

 

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