Java演示死锁代码

五迷三道 提交于 2020-01-30 09:34:43

死锁代码

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");    }}

控制台截图:

  

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!