一個死結的簡單例子

來源:互聯網
上載者:User

public class DeadLock {
 public static void main(String[] args) {
  // 2個資源
  final Object resource1 = "resource1";
  final Object resource2 = "resource2";
  // 第一個線程,想先佔有resource1,再嘗試著佔有resource2
  Thread t1 = new Thread() {
   public void run() {
    //嘗試佔有了resource1
    synchronized (resource1) {
     //成功佔有resource1
     System.out.println("Thread 1: locked resource 1");
     //休眠一段時間
     try {
      Thread.sleep(50);
     } catch (InterruptedException e) {
     }
     // 嘗試著佔有resource2,如果不能佔有,該線程會一直等待
     synchronized (resource2) {
      System.out.println("Thread 1: locked resource 2");
     }
    }
   }
  };

  // 第二個線程,想先佔有resource2,再佔有resource1
  Thread t2 = new Thread() {
   public void run() {
    // 嘗試著佔有resource2
    synchronized (resource2) {
     // 成功佔有resource2
     System.out.println("Thread 2: locked resource 2");
     // 休眠一段時間
     try {
      Thread.sleep(50);
     } catch (InterruptedException e) {
     }
     // 嘗試佔有resource1,如果不能佔有,該線程會一直等待
     synchronized (resource1) {
      System.out.println("Thread 2: locked resource 1");
     }
    }
   }
  };
  // 啟動兩個線程
  t1.start();
  t2.start();
 }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.