用Java实现简单的线程死锁

强颜欢笑 提交于 2019-12-03 04:37:05
public class DeadLockDemo2 {
    public static void main(String[] args) {
        Object LockA=new Object();
        Object LockB=new Object();
        new Thread(new Runnable() {
            @Override
            public void run() {
                String name=Thread.currentThread().getName();
                synchronized (LockA){
                    System.out.println(name+" get LockA want LockB");
                    try{
                        Thread.sleep(100);
                    }
                    catch (Exception e){
                        e.printStackTrace();
                    }
                    synchronized (LockB){
                        System.out.println(name + " got lockB");
                        System.out.println(name + ": say Hello!");
                    }
                }
            }
        },"Thread-A").start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                String name=Thread.currentThread().getName();
                synchronized (LockB){
                    System.out.println(name+" get LockB want LockA");
                    try{
                        Thread.sleep(100);
                    }
                    catch (Exception e){
                        e.printStackTrace();
                    }
                    synchronized (LockA){
                        System.out.println(name + " got lockA");
                        System.out.println(name + ": say Hello!");
                    }
                }
            }
        },"Thread-B").start();
    }


}

  

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