deadlock.java

来自「java网络编程」· Java 代码 · 共 52 行

JAVA
52
字号
package multithread;



/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class Deadlock extends Thread{

  static Object o1=new Object();
  static Object o2=new Object();

  boolean doO1First;

  public Deadlock(boolean doO1First) {
    this.doO1First=doO1First;
  }

  public static void main(String[] args) {
    Deadlock d1 = new Deadlock(true);
    //d1.start();
    Deadlock d2 = new Deadlock(false);
    d1.start();
    d2.start();
  }

  public void run(){
    for(;;){
      if (doO1First){
        synchronized(o1){
          synchronized(o2){
              System.out.println(Thread.currentThread().getName()+" Got both monitors");
          }
        }
      }else{
        synchronized(o2){
          synchronized(o1){
              System.out.println(Thread.currentThread().getName()+" Got both monitors");
          }
        }

      }
    }
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?