Synchronize 和 Lock 的區別與用法
阿新 • • 發佈:2019-01-28
一、synchronized和lock的用法區別
(1)synchronized(隱式鎖):在需要同步的物件中加入此控制,synchronized可以加在方法上,也可以加在特定程式碼塊中,括號中表示需要鎖的物件。
(2)lock(顯示鎖):需要顯示指定起始位置和終止位置。一般使用ReentrantLock類做為鎖,多個執行緒中必須要使用一個ReentrantLock類做為對 象才能保證鎖的生效。且在加鎖和解鎖處需要通過lock()和unlock()顯示指出。所以一般會在finally塊中寫unlock()以防死鎖。
二、synchronized和lock效能區別
synchronized是託管給JVM執行的,而lock是java寫的控制鎖的程式碼
三、synchronized和lock機制區別
(1)synchronized原始採用的是CPU悲觀鎖機制,即執行緒獲得的是獨佔鎖。獨佔鎖意味著其 他執行緒只能依靠阻塞來等待執行緒釋放鎖。
(2)Lock用的是樂觀鎖方式