Tip | 写一段会产生死锁的代码

作者: 凌川江雪 | 来源:发表于2019-05-07 04:44 被阅读11次

两个线程:
线程1
锁o1,
执行块中
try睡1s试图锁o2

线程2
锁o2,
执行块中锁o1,

object式:

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

    public static void main(String[] args) {
        new Thread(new Runnable() {
            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() {
            public void run() {
                synchronized (o2) {
                    System.out.println("线程2锁o2");
                    synchronized (o1) {
                        System.out.println("线程2锁o1");
                    }
                }
            }
        }).start();

    }

}

参考代码:

相关文章

  • Tip | 写一段会产生死锁的代码

    两个线程:线程1锁o1,执行块中try睡1s试图锁o2 线程2锁o2,执行块中锁o1, object式: 参考代码...

  • java并发--java死锁

    本篇结构: 前言 什么是死锁 产生死锁的必要条件 死锁的代码示例 死锁排查 如何避免死锁 总结 一、前言 今天被问...

  • java写一段死锁代码

  • GCD死锁

    写了一段gcd产生死锁的代码,其实早就见过这种代码了,记得当时,不理解,现在想想,这还是特别好理解的. 代码1: ...

  • Java中死锁分析

    产生死锁的四个条件1.要有锁2.要有拿了一个锁的同时又等待另一个锁3.循环等待4.无限等待 产生死锁的一段代码,银...

  • 如何避免线程死锁

    先来看看 导致死锁的一段代码 产生死锁必须具备以下四个条件: 互斥条件:该资源任意一个时刻只由一个线程占用。 请求...

  • 如何写一段死锁代码

    死锁 是指两个或两个以上的进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作...

  • iOS 死锁案例和产生的原因

    iOS 死锁案例和产生的原因 上面的代码会打印什么呢?答案是死锁 死锁的原因是由于队列引起的循环等待: 我们在主队...

  • 死锁

    死锁 产生死锁的必要条件 产生死锁的必要条件互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅...

  • Android线程死锁检测方案设计

    前言 在项目中,使用多线程是很常见的事情,但是如果处理不当,代码写的不好,就可能会导致线程死锁,对于死锁问题,从发...

网友评论

    本文标题:Tip | 写一段会产生死锁的代码

    本文链接:https://www.haomeiwen.com/subject/wzctwqtx.html