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表達式