無鎖->偏向鎖->輕量級鎖->重量級鎖 隨著競爭情況公升級
鎖可以公升級但是不能降級
比如在單執行緒下stringbuffer 就是無鎖
偏向鎖:總是由單執行緒訪問同步**塊,會在物件頭和棧針的鎖記錄儲存鎖偏向的執行緒id
jdk6、7預設啟用 但是啟動後幾秒才啟用
關閉延遲立即啟用,啟用加上
-xx: ??=0 (字母太多懶得打字)
偏向鎖:
優點:加鎖和解鎖不需要額外的開銷,和執行非同步方法相比僅存在納秒級的差距。
缺點:如果執行緒間存在鎖競爭,會帶來額外的鎖撤銷的消耗
適用場景:適用於只有乙個執行緒訪問同步塊場景
輕量級鎖:
優點:競爭的執行緒不會阻塞,提高了程式的響應速度。
缺點:如果始終得不到鎖競爭的執行緒,使用自旋會消耗cpu
適用場景:追求響應時間,同步塊執行速度非常快
重量級鎖:
優點:執行緒競爭不使用自旋,不會消耗cpu
缺點:執行緒阻塞,響應時間緩慢
適用場景:追求吞吐量。同步塊執行速度較長
關鍵字 一些關鍵字用法總結
register 用register宣告的變數稱暫存器變數,在可能的情況下會直接存放在機器的暫存器中 但對32位編譯器不起作用,當global optimizations 全域性優化 開的時候,它會做出選擇是否放在自己的暫存器中 不過其它與register關鍵字有關的其它符號都對32位編譯器有效。c...
MySql一些關鍵字
使用distinct關鍵字,只返回不同的值 distinct關鍵字,它必須直接放在列名的前面 eg select distinct id from stu 注意 不能部分使用distinct distinct關鍵字應用於所有列而不僅是前置它的列。如果給出select distinct id,name...
一些關鍵字或模板
一 dynamic cast 使用dynamic cast乙個繼承層次內進行轉化的指標 引用。dynamic cast依賴於rtti資訊,在轉換時,dynamic cast會檢查轉換的source物件是否真的可以轉換成target型別,這種檢查不是語法上的,而是真實情況的檢查。被轉換的型別必須是多型...