
文章插圖
synchronized和lock的異同如下:
1、首先synchronized是java內置關鍵字 , 在jvm層面 , Lock是個java類;
2、synchronized無法判斷是否獲取鎖的狀態 , Lock可以判斷是否獲取到鎖;
【synchronize lock區別 synchronized和lock的異同】
3、synchronized會自動釋放鎖(a 線程執行完同步代碼會釋放鎖 ;b 線程執行過程中發生異常會釋放鎖) , Lock需在finally中手工釋放鎖(unlock()方法釋放鎖) , 否則容易造成線程死鎖;
4、用synchronized關鍵字的兩個線程1和線程2 , 如果當前線程1獲得鎖 , 線程2線程等待 。如果線程1阻塞 , 線程2則會一直等待下去 , 而Lock鎖就不一定會等待下去 , 如果嘗試獲取不到鎖 , 線程可以不用一直等待就結束了;
5、synchronized的鎖可重入、不可中斷、非公平 , 而Lock鎖可重入、可判斷、可公平(兩者皆可);
6、Lock鎖適合大量同步的代碼的同步問題 , synchronized鎖適合代碼少量的同步問題 。
- 霧凇,俗稱樹掛,是低溫時 樹掛和霧凇的區別
- 天貓店和淘寶店的區別在哪 天貓店和淘寶店的區別
- hp+和hp- hpe和hp區別
- 2b鉛筆和普通鉛筆區別 2B鉛筆和普通鉛筆
- 天然氣紅火和藍火有什么區別 煤氣是紅火還是藍火
- 提名獎和獲獎有什么區別 提名和獲獎的區別
- 大理石和花崗巖有什么區別各舉出五種常用石材 大理石和花崗巖有什么區別
- 生姜和黃姜有什么區別 黃生姜和普通姜的區別
- 快手黃鉆和快幣的區別 快手黃鉆跟快幣的區別
- 干白和干紅的區別是由什么決定的? 干白與干紅的區別
