1. 程式人生 > 其它 >Synchronized與Lock的區別和優缺點

Synchronized與Lock的區別和優缺點

1.synchronized 是 Java 的一個內建特性關鍵字,而 Lock 是 Java 的一個介面類;

2.synchronized 在發生異常時會自動釋放執行緒佔用的鎖,而 Lock 在發生異常時(不發生也一樣)需要主動在 finally 中呼叫 unLock() 去釋放鎖;

3.Lock 可以讓等待鎖的執行緒響應中斷,而 synchronized 無法響應中斷,會一直等待下去;

4.Lock 可以知道有沒有成功獲取到鎖,而 synchronized 無法辦到;

5.Lock 可以提高多執行緒進行讀操作的效率,而 synchronized 不可以;

6.在效能上來說如果競爭資源不激烈則兩者差距不大,如果競爭資源非常激烈(很多執行緒同時搶佔)時

Lock 的效能遠遠好於 synchronized;

7.不過要注意 Lock 只能中斷阻塞中的執行緒,一旦獲取到鎖進入執行狀態就無法中斷;

8.Lock 和 synchronized 都可以保證記憶體可見性。