欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java多線程死鎖示例

 更新時(shí)間:2018年08月30日 14:42:31   作者:u013063153  
這篇文章主要介紹了Java多線程死鎖,結(jié)合實(shí)例形式分析了Java多線程出現(xiàn)死鎖的相關(guān)原因與操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例演示了Java多線程死鎖。分享給大家供大家參考,具體如下:

package com.damlab.fz;
public class DeadLock {
  public static void main(String[] args) {
    Resource r1 = new Resource();
    Resource r2 = new Resource();
    // 每個(gè)線程都擁有r1,r2兩個(gè)對(duì)象
    Thread myTh1 = new MyThread1(r1, r2);
    Thread myTh2 = new MyThread2(r1, r2);
    myTh1.start();
    myTh2.start();
  }
}
class Resource {
  private int i;
}
class MyThread1 extends Thread {
  private Resource r1, r2;
  public MyThread1(Resource r1, Resource r2) {
    this.r1 = r1;
    this.r2 = r2;
  }
  @Override
  public void run() {
    while (true) {
      // 先獲得r1的鎖,再獲得r2的鎖
      synchronized (r1) {
        System.out.println("1號(hào)線程獲取了r1的鎖");
        synchronized (r2) {
          System.out.println("1號(hào)線程獲取了r2的鎖");
        }
      }
    }
  }
}
class MyThread2 extends Thread {
  private Resource r1, r2;
  public MyThread2(Resource r1, Resource r2) {
    this.r1 = r1;
    this.r2 = r2;
  }
  @Override
  public void run() {
    while (true) {
      // 先獲得r2的鎖,再獲得r1的鎖
      synchronized (r2) {
        System.out.println("2號(hào)線程獲取了r2的鎖");
        synchronized (r1) {
          System.out.println("2號(hào)線程獲取了r1的鎖");
        }
      }
    }
  }
}

運(yùn)行結(jié)果:

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java進(jìn)程與線程操作技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 詳解OAuth2 Token 一定要放在請(qǐng)求頭中嗎

    詳解OAuth2 Token 一定要放在請(qǐng)求頭中嗎

    這篇文章主要介紹了詳解OAuth2 Token 一定要放在請(qǐng)求頭中嗎,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • servlet3新特性_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    servlet3新特性_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了servlet3新特性的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Java實(shí)現(xiàn)將漢字轉(zhuǎn)化為漢語(yǔ)拼音的方法

    Java實(shí)現(xiàn)將漢字轉(zhuǎn)化為漢語(yǔ)拼音的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)將漢字轉(zhuǎn)化為漢語(yǔ)拼音的方法,實(shí)例演示了Java引用pinyin4j庫(kù)實(shí)現(xiàn)漢子轉(zhuǎn)化成拼音的使用技巧,需要的朋友可以參考下
    2015-12-12
  • Struts2 $,#,%詳解及實(shí)例代碼

    Struts2 $,#,%詳解及實(shí)例代碼

    這篇文章主要介紹了Struts2 $,#,%詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • springboottest測(cè)試依賴和使用方式

    springboottest測(cè)試依賴和使用方式

    這篇文章主要介紹了springboottest測(cè)試依賴和使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Sentinel 整合SpringCloud的詳細(xì)教程

    Sentinel 整合SpringCloud的詳細(xì)教程

    Spring Cloud Alibaba Sentinel 是阿里巴巴提供的,致力于提供微服務(wù)一站式解決方案,這篇文章主要介紹了Sentinel 之 整合SpringCloud的相關(guān)知識(shí),需要的朋友可以參考下
    2021-10-10
  • Maven坐標(biāo)和依賴的實(shí)現(xiàn)示例

    Maven坐標(biāo)和依賴的實(shí)現(xiàn)示例

    本文主要介紹了Maven坐標(biāo)和依賴的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • SpringBoot整合EasyExcel進(jìn)行大數(shù)據(jù)處理的方法詳解

    SpringBoot整合EasyExcel進(jìn)行大數(shù)據(jù)處理的方法詳解

    EasyExcel是一個(gè)基于Java的簡(jiǎn)單、省內(nèi)存的讀寫(xiě)Excel的開(kāi)源項(xiàng)目。在盡可能節(jié)約內(nèi)存的情況下支持讀寫(xiě)百M(fèi)的Excel。本文將在SpringBoot中整合EasyExcel進(jìn)行大數(shù)據(jù)處理,感興趣的可以了解一下
    2022-05-05
  • ElasticSearch學(xué)習(xí)之文檔API相關(guān)操作

    ElasticSearch學(xué)習(xí)之文檔API相關(guān)操作

    這篇文章主要為大家介紹了ElasticSearch學(xué)習(xí)之文檔API相關(guān)操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • springboot 2.0 mybatis mapper-locations掃描多個(gè)路徑的實(shí)現(xiàn)

    springboot 2.0 mybatis mapper-locations掃描多個(gè)路徑的實(shí)現(xiàn)

    這篇文章主要介紹了springboot 2.0 mybatis mapper-locations掃描多個(gè)路徑的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評(píng)論