死锁代码
public class DeadLock {    final Object lockA = new Object();    final Object lockB = new Object();    public static void main(String[] args) {        DeadLock demo = new DeadLock();        demo.startLock();    }    public void startLock() {        ThreadA a = new ThreadA(lockA, lockB);        ThreadB b = new ThreadB(lockA, lockB);        // start threads        a.start();        b.start();    }}class ThreadA extends Thread {    private Object lockA = null;    private Object lockB = null;    public ThreadA(Object a, Object b) {        this.lockA = a;        this.lockB = b;    }    public void run() {        synchronized (lockA) {            System.out.println("*** Thread A: ***: Lock A");            try {                sleep(3000);            } catch (InterruptedException e) {                e.printStackTrace();            }            synchronized (lockB) {                System.out.println("*** Thread A: ***: Lock B");            }        }        System.out.println("*** Thread A: ***: Finished");    }}class ThreadB extends Thread {    private Object lockA = null;    private Object lockB = null;    public ThreadB(Object a, Object b) {        this.lockA = a;        this.lockB = b;    }    public void run() {        synchronized (lockB) {            System.out.println("*** Thread B: ***: Lock B");            try {                sleep(3000);            } catch (InterruptedException e) {                e.printStackTrace();            }            synchronized (lockA) {                System.out.println("*** Thread B: ***: Lock A");            }        }        System.out.println("*** Thread B: ***: Finished");    }}
控制台截图:
  
来源:https://www.cnblogs.com/chenmingjun/p/9671043.html