写一段死锁的Java代码

半世苍凉 提交于 2019-12-28 23:44:43

写个死锁bug

死锁发生场景之一大概就是。
如果有两个线程A and B
如果A执行了一段任务想等B执行完成再执行,同样如果B如果执行了一半想等等A。那么就会一直等到天长地久QWQ。
实例代码:

    public static void main(String[] args)  {
        test2();
    }
    public static void test2(){
        class A{
            Thread threadA = null;
            Thread threadB = null;
            public void doSome(){
                threadA = new Thread(new Runnable() {
                    @Override
                    public void run() {
                        System.out.println("A start");
                        try {
                            threadB.join();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println("A end");
                    }
                });
                threadA = new Thread(new Runnable() {
                    @Override
                    public void run() {
                        System.out.println("B start");
                        try {
                            threadA.join();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println("B end");
                    }
                });
                threadA.start();
                threadB.start();
            }
        };
        new A().doSome();
    }

你会发现运行了Start 便没有了end。那么我们成功的写了一个死锁bug。
在这里插入图片描述

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