1. 程式人生 > >重量級鎖 synchronized(不看後悔,看了必懂)

重量級鎖 synchronized(不看後悔,看了必懂)

synchronized關鍵字並非一開始就該物件加上重量級鎖,也是從偏向鎖,輕量級鎖,再到重量級鎖的過程。這個過程也告訴我們,假如我們一開始就知道某個同步程式碼塊的競爭很激烈、很慢的話,那麼我們一開始就應該使用重量級鎖了,從而省掉一些鎖轉換的開銷。

互斥鎖(重量級鎖)也稱為阻塞同步、悲觀鎖

重量級鎖是依賴物件內部的monitor鎖來實現的,而monitor又依賴作業系統的MutexLock(互斥鎖)來實現的,所以重量級鎖也稱為互斥鎖

為什麼重量級執行緒開銷很大的?

當系統檢查到鎖是重量級鎖之後,會把等待想要獲得鎖的執行緒進行阻塞,被阻塞的執行緒不會消耗cpu。但是阻塞或者喚醒一個執行緒時,都需要作業系統來幫忙,這就需要從使用者態轉換到核心態,而轉換狀態是需要消耗很多時間的,有可能比使用者執行程式碼的時間還要長。