我如何解决这种僵局情况?

时间:2019-06-19 13:28:00

标签: java multithreading locking deadlock synchronized

我试图产生一个死锁状态。我可以使用下面的代码来生成它。

class MyCode {

  public static Object lock1  = new Object();
  public static Object lock2  = new Object();

    public static void main (String[] args) throws Exception{

    Thread t1 = new Thread(()-> {
      synchronized(lock1) {
        System.out.println("Took lock on object" + lock1);
        try {
        Thread.sleep(10000);
        }catch(Exception e) {}
        synchronized(lock2) {
          System.out.println("hello world 1....");      
        }
      }
    });

    Thread t2 = new Thread(()-> {
      synchronized(lock2) {
          System.out.println("Took lock on object" + lock2);
        try { 
          Thread.sleep(10000);
        }catch(Exception e) {}
        synchronized(lock1) {
          System.out.println("hello world 2....");      
        }
      }
    });
    t1.start();
    t2.start();
    System.out.println("Hello Java");
    }
}

我的要求是使用这2个线程执行代码。

我该如何实现? Java中还有其他方法可以使用wait / notify方法吗?

谢谢。

0 个答案:

没有答案