溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Java中實現多線程死鎖

發布時間:2021-05-11 16:35:03 來源:億速云 閱讀:162 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關怎么在Java中實現多線程死鎖,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

Java的優點是什么

1. 簡單,只需理解基本的概念,就可以編寫適合于各種情況的應用程序;2. 面向對象;3. 分布性,Java是面向網絡的語言;4. 魯棒性,java提供自動垃圾收集來進行內存管理,防止程序員在管理內存時容易產生的錯誤。;5. 安全性,用于網絡、分布環境下的Java必須防止病毒的入侵。6. 體系結構中立,只要安裝了Java運行時系統,就可在任意處理器上運行。7. 可移植性,Java可以方便地移植到網絡上的不同機器。8.解釋執行,Java解釋器直接對Java字節碼進行解釋執行。

具體如下:

package com.damlab.fz;
public class DeadLock {
  public static void main(String[] args) {
    Resource r1 = new Resource();
    Resource r2 = new Resource();
    // 每個線程都擁有r1,r2兩個對象
    Thread myTh2 = new MyThread1(r1, r2);
    Thread myTh3 = new MyThread2(r1, r2);
    myTh2.start();
    myTh3.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號線程獲取了r1的鎖");
        synchronized (r2) {
          System.out.println("1號線程獲取了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號線程獲取了r2的鎖");
        synchronized (r1) {
          System.out.println("2號線程獲取了r1的鎖");
        }
      }
    }
  }
}

運行結果:

怎么在Java中實現多線程死鎖

看完上述內容,你們對怎么在Java中實現多線程死鎖有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女