1.1.synchronized 只能實現單線程的讀寫,一旦多個線程要同時訪問一個資源,就只有一個線程可以開啓訪問,其餘線程只能等待,非常影響性能。所以如果使用的話,一定要儘量減小鎖的粒度,到代碼快級。
1.2.synchronized 不需要手動釋放鎖,發生異常的時候會自動釋放;但是Lock必須要自己手動釋放,如果沒有手動釋放的話,會導致死鎖,所以使用的時候必須有try finally
1.3.可以提高多線程的讀寫效率,讀讀共享,寫寫互斥,讀寫互斥。
1.4.Lock 在鎖住的時候可以中斷鎖,但是如果是 synchronized的話 就必須要一直等待。
1.5.Lock可以釋放特定的鎖,synchronized 不能。
1.6.Lock是一個接口、synchronized 是內置的語言實現,而且lock的源代碼進行鎖定的時候用的也是synchronized 關鍵字。
1.7.Lock可以知道有沒有成功獲取到鎖,synchronized 無法辦到。
如果資源競爭不激烈,那麼兩者性能差不多,如果競爭非常激烈的話,Lock性能要好很多。