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鎖適合代碼少量的同步問題。