線程同步方式

今天給大家介紹一下線程同步有哪些方式:

同步方法

給方法加上synchronized關鍵字,同步方法的鎖是this,靜態同步方法的鎖是類名.class

同步代碼塊

由synchronized修飾的代碼塊,同步代碼塊的鎖是任意的對象

使用特殊域變量(volatile)實現線程同步

a.volatile關鍵字為域變量的訪問提供了一種免鎖機制,
b.使用volatile修飾域相當于告訴虛擬機該域可能會被其他線程更新,
c.因此每次使用該域就要重新計算,而不是使用寄存器中的值
d.volatile不會提供任何原子操作,它也不能用來修飾final類型的變量

使用重入鎖實現線程同步

在JavaSE5.0中新增了一個java.util.concurrent包來支持同步。 ReentrantLock類是可重入、互斥、實現了Lock接口的鎖, 它與使用synchronized方法和快具有相同的基本行為和語義,并且擴展了其能力

使用局部變量實現線程同步

如果使用ThreadLocal管理變量,則每一個使用該變量的線程都獲得該變量的副本, 副本之間相互獨立,這樣每一個線程都可以隨意修改自己的變量副本,而不會對其他線程產生影響。

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

推薦閱讀更多精彩內容

  • Java8張圖 11、字符串不變性 12、equals()方法、hashCode()方法的區別 13、...
    Miley_MOJIE閱讀 3,731評論 0 11
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發崗...
    時芥藍閱讀 42,366評論 11 349
  • Java SE 基礎: 封裝、繼承、多態 封裝: 概念:就是把對象的屬性和操作(或服務)結合為一個獨立的整體,并盡...
    Jayden_Cao閱讀 2,140評論 0 8
  • 歷史從未停止前行 血淚汗鑄就的歷史 換來新的秀麗河山
    蘭呃呃閱讀 76評論 0 0
  • 我們家老朱,在不熟悉的人面前一定是高C的表現,冷靜、分析、邏輯、理性,給人一種距離感。一旦成為了朋友并得到他的認同...
    ChristineWang閱讀 914評論 0 6