
文章插圖
synchronize和lock區別如下:
【Synchronized和Lock哪個更好 synchronize和lock區別】
1、synchronized和lock的用法區別 。synchronized:在需要同步的對象中加入此控制,synchronized可以加在方法上,也可以加在特定代碼塊中,括號中表示需要鎖的對象 。lock:需要顯示指定起始位置和終止位置 。一般使用ReentrantLock類做為鎖,多個線程中必須要使用一個ReentrantLock類做為對象才能保證鎖的生效 。且在加鎖和解鎖處需要通過lock()和unlock()顯示指出 。所以一般會在finally塊中寫unlock()以防死鎖 。
2、synchronized和lock性能區別 。synchronized是托管給JVM執行的,而lock是java寫的控制鎖的代碼 。在Java1.5中,synchronize是性能低效的 。因為這是一個重量級操作,需要調用操作接口,導致有可能加鎖消耗的系統時間比加鎖以外的操作還多 。相比之下使用Java提供的Lock對象,性能更高一些 。但是到了Java1.6,發生了變化 。synchronize在語義上很清晰,可以進行很多優化,有適應自旋,鎖消除,鎖粗化,輕量級鎖,偏向鎖等等 。導致在Java1.6上synchronize的性能并不比Lock差 。官方也表示,他們也更支持synchronize,在未來的版本中還有優化余地 。
3、synchronized和lock用途區別 。synchronized原語和ReentrantLock在一般情況下沒有什么區別,但是在非常復雜的同步應用中,請考慮使用ReentrantLock 。
- 鐺怎么組詞語和拼音
- nove5z和nove5i pro有什么區別
- 蘿卜和雞蛋怎么做餃子餡 蘿卜雞蛋怎么做美味的餃子餡
- 濰坊濱海國際學?,F在改名叫什么 濰坊濱海國際學校和濰坊濱海中學
- 平板電腦的辦公軟件和電腦一樣嗎
- 順敘倒敘插敘補敘的識別和作用
- 和平精英禮物贈送能跨系統嗎
- 國家禁止高考移民
- 清朝十四阿哥 清朝十四阿哥和四阿哥
- 絲瓜和黃瓜的區別
