如何解决Java线程死锁异常(ThreadDeadlockException)

  public class DeadlockExample {

  private static final Object resource1 = new Object();

  private static final Object resource2 = new Object();

  public static void main(String[] args) {

  Thread thread1 = new Thread(() -> {

  synchronized (resource1) {

  System.out.println("Thread 1: Holding resource 1");

  try {

  Thread.sleep(1000);

  } catch (InterruptedException e) {

  e.printStackTrace();

  }

  synchronized (resource2) {

  System.out.println("Thread 1: Holding resource 1 and 2");

  }

  }

  });

  Thread thread2 = new Thread(() -> {

  synchronized (resource2) {

  System.out.println("Thread 2: Holding resource 2");

  try {

  Thread.sleep(1000);

  } catch (InterruptedException e) {

  e.printStackTrace();

  }

  synchronized (resource1) {

  System.out.println("Thread 2: Holding resource 2 and 1");

  }

  }

  });

  thread1.start();

  thread2.start();

  }

  }登录后复制