synchronize是java的關鍵字,可以作用在方法上,代碼塊上,通過jvm來控制鎖的獲取與釋放,它提供的是非公平鎖,不能夠手動釋放鎖,當代碼執行完畢或者拋出異常由jvm放棄鎖。
lock是juc下面的一個接口,提供了對鎖的一些操作規范,需要手動獲取鎖和釋放鎖,通常在finally中釋放。
lock響應中斷。
lock的實現類為reentrentlock,意味著他和synchronize同樣具有可重入性,而默認為非公平鎖(構造器約定),可以設置為公平鎖。還提供了其他API,如trylock,可以嘗試去獲取鎖,同時提供了超時時間。另一個鎖reentrentreadwritelock,則側重于讀寫操作的性能優化,能夠在讀取的時候上讀鎖,多線程可同時訪問,在進行寫操作的時候則需要等待讀鎖釋放,并允許同步操作。
推薦文章:https://www.cnblogs.com/handsomeye/p/5999362.html?from=singlemessage