最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java多線程synchronized同步方法詳解

 更新時間:2020年03月11日 10:12:30   作者:lkc9  
這篇文章主要介紹了Java多線程synchronized同步方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

1、synchronized 方法與鎖對象

  線程鎖的是對象。

  1)A線程先持有 object 對象的 Lock 鎖, B線程可以以異步的方式調(diào)用 object 對象中的非 synchronized 類型的方法

  2)A線程先持有 object 對象的 Lock 鎖, B線程如果在這時調(diào)用 object 對象中的 synchronized 類型的方法,則需要等待,也就是同步。

2、臟讀(DirtyRead)

  示例:

public class DirtyReadTest {
  public static void main(String[] args) {
    try {
      PublicVar publicVar = new PublicVar();
      ThreadA thread = new ThreadA(publicVar);
      thread.start();
      Thread.sleep(200);
      publicVar.getValue();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  static class ThreadA extends Thread {
    private PublicVar publicVar;

    public ThreadA(PublicVar publicVar) {
      this.publicVar = publicVar;
    }

    @Override
    public void run() {
      super.run();
      publicVar.setValue("B", "BB");
    }
  }

  static class PublicVar {
    public String username = "A";
    public String password = "AA";

    synchronized public void setValue(String username, String password) {
      try {
        this.username = username;
        Thread.sleep(1000);
        this.password = password;
        System.out.println("setValue method thread name = " + Thread.currentThread().getName() + "\tusername = " + username + "\tpassword = " + password);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }

    // 因為 getValue 方法是非 synchronized 方法,所以造成了臟讀
    public void getValue() {
      System.out.println("getValue method thread name = " + Thread.currentThread().getName() + "\tusername = " + username + "\tpassword = " + password);
    }
  }
}

結(jié)果如圖:

3、synchronized 鎖重入

  "可重入鎖"的概念是:

  自己可以再次活得自己的內(nèi)部鎖。比如有1條線程獲得了某個對象的鎖,此時這個對象鎖還沒有釋放,當其再次想要獲取這個對象的鎖的時候還是可以獲取的,如果不可以鎖重入的話,就會造成死鎖。

  可重入鎖也支持在父子類繼承的環(huán)境中:在繼承中,子類是完全可以通過“可重入鎖”調(diào)用父類的同步方法的。

4、出現(xiàn)異常,鎖自動釋放

  線程出現(xiàn)異常,會釋放當前線程的鎖

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • eclipse修改maven倉庫位置的方法實現(xiàn)

    eclipse修改maven倉庫位置的方法實現(xiàn)

    本文主要介紹了eclipse修改maven倉庫位置的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • 淺談hibernate急迫加載問題(多重外鍵關(guān)聯(lián))

    淺談hibernate急迫加載問題(多重外鍵關(guān)聯(lián))

    這篇文章主要介紹了淺談hibernate急迫加載問題(多重外鍵關(guān)聯(lián)),具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • springboot?bootstrap.yml?nacos配置中心問題

    springboot?bootstrap.yml?nacos配置中心問題

    這篇文章主要介紹了springboot?bootstrap.yml?nacos配置中心問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java中JWT的使用的詳細教程

    Java中JWT的使用的詳細教程

    JWT的本質(zhì)就是一個字符串,它是將用戶信息保存到一個Json字符串中,然后進行編碼后得到一個JWT token,并且這個JWT token帶有簽名信息,接收后可以校驗是否被篡改,所以可以用于在各方之間安全地將信息作為Json對象傳輸,本文介紹了Java中JWT的使用,需要的朋友可以參考下
    2023-02-02
  • Jackson自定義序列化與反序列化注解詳解

    Jackson自定義序列化與反序列化注解詳解

    這篇文章主要介紹了Jackson自定義序列化與反序列化注解詳解,某些場景下,我們使用Jackson對數(shù)據(jù)進行序列化或反序列化的時候,需要對某些數(shù)據(jù)進行特殊處理,需要的朋友可以參考下
    2023-11-11
  • springcloud項目快速開始起始模板的實現(xiàn)

    springcloud項目快速開始起始模板的實現(xiàn)

    本文主要介紹了springcloud項目快速開始起始模板思路的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Java 動態(tài)代理的多種實現(xiàn)方式

    Java 動態(tài)代理的多種實現(xiàn)方式

    動態(tài)代理實際上是JVM在運行期動態(tài)創(chuàng)建class字節(jié)碼并加載的過程。本文講述了Java 動態(tài)代理的多種實現(xiàn)方式,感興趣的朋友可以選擇適合自己的方式
    2021-06-06
  • Java Web項目中編寫定時任務(wù)的實現(xiàn)

    Java Web項目中編寫定時任務(wù)的實現(xiàn)

    本篇文章主要介紹了Java Web項目中編寫定時任務(wù)的實現(xiàn),具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • 淺談為什么重寫equals()就要重寫hashCode()

    淺談為什么重寫equals()就要重寫hashCode()

    困擾我很久的問題,一直不明白為什么重寫equals()方法的時候要重寫hashCode()方法,這次總算弄明白了,作此分享,感興趣的可以了解一下
    2021-10-10
  • 將Mybatis升級為Mybatis-Plus的詳細過程

    將Mybatis升級為Mybatis-Plus的詳細過程

    本文詳細介紹了在若依管理系統(tǒng)(v3.8.8)中將MyBatis升級為MyBatis-Plus的過程,旨在提升開發(fā)效率,通過本文,開發(fā)者可實現(xiàn)系統(tǒng)功能無損升級,同時享受MyBatis-Plus帶來的便捷特性,如代碼簡化和性能優(yōu)化,需要的朋友可以參考下
    2025-04-04

最新評論

日照市| 康平县| 余干县| 罗平县| 新和县| 青神县| 拉萨市| 济南市| 普安县| 无锡市| 永安市| 台前县| 扬中市| 独山县| 台南市| 凉城县| 普兰县| 红原县| 长沙市| 射阳县| 全椒县| 林甸县| 五台县| 文山县| 新龙县| 溧阳市| 孝义市| 潼南县| 安远县| 当雄县| 涿鹿县| 内乡县| 彭阳县| 繁昌县| 泾川县| 凤冈县| 嘉祥县| 噶尔县| 长武县| 万宁市| 乌鲁木齐县|