写一个会导致死锁的线程

Posted java_pro

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写一个会导致死锁的线程相关的知识,希望对你有一定的参考价值。

public class Test {
    static Object o1 = new Object();
    static Object o2 = new Object();

    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (o1) {
                    System.out.println("线程1锁o1");
                    try {
                        Thread.sleep(1000);//让当前线程睡眠,保证让另一线程得到o2,防止这个线程启动一下连续获得o1和o2两个对象的锁。
                        synchronized (o2) {
                            System.out.println("线程1锁o2");
                        }
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (o2) {
                    System.out.println("线程2锁o2");
                    synchronized (o1) {
                        System.out.println("线程2锁o1");
                    }
                }
            }
        }).start();
    }
}

 

以上是关于写一个会导致死锁的线程的主要内容,如果未能解决你的问题,请参考以下文章

面试题:写一个死锁示例

当通过的线程数量小于屏障限制时,屏障(例如 CyclicBarrier)是不是会导致死锁?

python多线程queue导致的死锁问题

线程死锁 导致线程停止工作

这样的存储过程会导致死锁吗?

java 死锁