synchronized和ReentrantLock對比

概念

  • synchronized,翻譯同步,俗稱內置鎖
  • ReentrantLock,Re-entrant-Lock,俗稱重入鎖,顯示鎖

synchronized的使用

  • 當synchronized作用于普通方法是,鎖對象是this;
  • 當synchronized作用于靜態方法是,鎖對象是當前類的Class對象;
  • 當synchronized作用于代碼塊時,鎖對象是synchronized(obj)中的這個obj。

相同點

  • 互斥性
  • 內存可見性
  • 可以重入(只是針對ReentrantLock)

不同點

  • ReentrantLock實現Lock接口,需要顯示的加鎖和解鎖
  • ReentrantLock提供了非阻塞獲取鎖的方式,tryLock()
  • ReentrantLock提供了超時獲取鎖的方式,tryLock(long timeout, TimeUnit unit)
  • ReentrantLock能被中斷的獲取鎖的方式,lockInterruptibly()

性能對比

  • 在jdk5,并發量超過64,性能對比為4
  • 在jdk5,并發量超過64,性能對比為1.x
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 摘要: 我們已經知道,synchronized 是Java的關鍵字,是Java的內置特性,在JVM層面實現了對臨界...
    kingZXY2009閱讀 1,845評論 0 20
  • 我們已經知道,synchronized 是java的關鍵字,是Java的內置特性,在JVM層面實現了對臨界資源的同...
    valor_wang閱讀 391評論 0 1
  • 作者: 一字馬胡 轉載標志 【2017-11-03】 更新日志 前言 在java中,鎖是實現并發的關鍵組件,多個...
    一字馬胡閱讀 44,199評論 1 32
  • 在一般性開發中,筆者經常看到很多同學在對待java并發開發模型中只會使用一些基礎的方法。比如Volatile,sy...
    張勇_bf29閱讀 710評論 0 1
  • 前言 上一篇文章《基于CAS操作的Java非阻塞同步機制》 分析了非同步阻塞機制的實現原理,本篇將分析一種以非同步...
    Mars_M閱讀 4,847評論 5 9