synchronized和lock的區別

1.synchronized是java內置的關鍵詞,是基於jvm層面的,而lock是java類

2.synchronized無法獲取到鎖的狀態,而lock是可以獲得鎖的狀態

3.synchronized可以自動釋放鎖,而lock是需要在finally裏面手動去釋放鎖,不然的話很容易產生死鎖的情況

4.用synchironized的兩個線程1,2 當線程1獲得鎖,線程2釋放鎖,當線程1阻塞的話,線程2一直等待,而lock的話就不一定一直等待下去,如果嘗試獲取不到鎖的話,線程就可以不用一直等待就結束了

5.synchironized是可重入鎖,非公平鎖,不可中斷,而lock鎖可以重入,可中斷,可以實現公平和非公平鎖

6.Lock鎖適合大量同步的代碼的同步問題,synchronized鎖適合代碼少量的同步問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章