關鍵字鎖的一些概念

2021-10-01 07:08:08 字數 533 閱讀 2176

無鎖->偏向鎖->輕量級鎖->重量級鎖 隨著競爭情況公升級

鎖可以公升級但是不能降級

比如在單執行緒下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型別,這種檢查不是語法上的,而是真實情況的檢查。被轉換的型別必須是多型...