Lock和synchronized的對比

 

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性能要好很多。

 

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