Synchronized與Lock的區別和優缺點
阿新 • • 發佈:2021-10-23
1.synchronized 是 Java 的一個內建特性關鍵字,而 Lock 是 Java 的一個介面類;
2.synchronized 在發生異常時會自動釋放執行緒佔用的鎖,而 Lock 在發生異常時(不發生也一樣)需要主動在 finally 中呼叫 unLock() 去釋放鎖;
3.Lock 可以讓等待鎖的執行緒響應中斷,而 synchronized 無法響應中斷,會一直等待下去;
4.Lock 可以知道有沒有成功獲取到鎖,而 synchronized 無法辦到;
5.Lock 可以提高多執行緒進行讀操作的效率,而 synchronized 不可以;
6.在效能上來說如果競爭資源不激烈則兩者差距不大,如果競爭資源非常激烈(很多執行緒同時搶佔)時
7.不過要注意 Lock 只能中斷阻塞中的執行緒,一旦獲取到鎖進入執行狀態就無法中斷;
8.Lock 和 synchronized 都可以保證記憶體可見性。