syncronized 與 Lock 的區別

  • Lock是個接口;synchronized是Java中的關鍵字,內置語言實現
  • synchronized發生異常時,會自動釋放線程佔有的鎖,所以不會發生異常死鎖;lock發生異常時,若是沒有主動經過unlock()方法釋放鎖,那麼就會一直佔用鎖,發生死鎖,所以須要在finally塊中釋放鎖
  • lock能夠讓等待鎖的線程響應中斷;synchronized不行,等待的線程會一直等待下去
  • 經過lock能夠知道有沒有成功獲取鎖;synchronized不行
  • lock能夠提升多個線程進行讀操做的效率。
補充:

從性能上來講,若是競爭資源不激烈,二者性能是差很少的;但競爭很是激烈時,此時lock的性能要遠遠高於synchronized。性能

相關文章
相關標籤/搜索