2021-04-24 死锁的条件

2021-04-24  本文已影响0人  捕风的逍遥侯
死锁的四个条件
package hxy.bytecode.thread;

public class DeadThead {
    public static void main(String[] args) {
        Object a = new Object();
        Object b = new Object();


        new Thread(() -> {
            synchronized (a) {
                System.out.println("I get a");
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println("I want to get b");
                synchronized (b) {
                    System.out.println("I am a and   get b");
                }

            }
        }).start();

        new Thread(() -> {
            synchronized (b) {
                System.out.println("I get b");
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println("I want to get a");
                synchronized (a) {
                    System.out.println("I am b and   get a");
                }

            }
        }).start();

        System.out.println("done");
    }
}

效果如下


image.png

查看java进程

$ jps
image.png

查看死锁分析

$ jstack
image.png
上一篇下一篇

猜你喜欢

热点阅读