synchronized和lock的異同如下:
1、首先synchronized是java內置關鍵字,在jvm層面,Lock是個java類;
2、synchronized無法判斷是否獲取鎖的狀態,Lock可以判斷是否獲取到鎖;
3、synchronized會自動釋放鎖(a 線程執行完同步代碼會釋放鎖 ;b 線程執行過程中發生異常會釋放鎖),Lock需在finally中手工釋放鎖(unlock()方法釋放鎖),否則容易造成線程死鎖;
4、用synchronized關鍵字的兩個線程1和線程2,如果當前線程1獲得鎖,線程2線程等待 。如果線程1阻塞,線程2則會一直等待下去,而Lock鎖就不一定會等待下去,如果嘗試獲取不到鎖,線程可以不用一直等待就結束了;
5、synchronized的鎖可重入、不可中斷、非公平,而Lock鎖可重入、可判斷、可公平(兩者皆可);
【synchronize lock區別 synchronized和lock的異同】6、Lock鎖適合大量同步的代碼的同步問題,synchronized鎖適合代碼少量的同步問題 。
相關經驗推薦
- 出恭入敬是什么意思 出恭和入敬區別
- CRO+CDMO cro和cdmo有什么區別
- 箬葉和粽葉有什么區別 箬粽葉與麻粽葉的區別
- 提名和獲獎的區別 提名獎和獲獎有什么區別
- 炸雞粉和面包糠的區別 面包糠和炸雞粉哪個口感好
- 二建大理石和花崗巖有什么區別 大理石和花崗巖有什么區別
- 生姜和黃姜有什么區別 黃生姜和普通姜的區別
- 蕓豆和四季豆的區別,四季豆的好處 蕓豆和四季豆誰的營養價值高
- 快手黃鉆跟快幣的區別 快手黃鉆和快幣的區別
- 杭州失業保險金和失業補助金區別一覽
