gpt4 book ai didi

java - 下面的java多线程例子总是死锁

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:07:19 24 4
gpt4 key购买 nike

Object o1 = new Object();
Object o2 = new Object();

线程 1:

synchronized(o1){
Thread.sleep(1000);
synchronized(o2){
//do something
}
}

线程 2:

synchronized(o2){
Thread.sleep(1000);
synchronized(o1){
//do something
}
}

测试代码:

new Thread1().start();
new Thread2().start();

上面的代码是否总是死锁,如果不是,为什么?

最佳答案

是的,因为一旦一个线程被唤醒,它就不能进入下一个同步段,因为锁已经被拿走了。

(可能存在一个理论上场景,其中不会出现死锁 - 如果一个线程在第二个线程获得 cpu 时间甚至获得第一个锁之前获得两个锁)

关于java - 下面的java多线程例子总是死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34506205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com