此Java代码如何产生死锁?

此Java代码如何产生死锁?,第1张

此Java代码如何产生死锁

如果在打印第一行之后并在调用bowBack之前放置Thread.sleep(1000),则应该看到死锁。无论如何,这种僵局都会发生,这是很少见的。

您有两个线程,要获取的两个锁的顺序不同。这可能会使每个线程都持有一个锁,但无法获得第二个锁。即僵局。

注意:线程需要很长时间才能启动,这意味着第一个线程可以在第二个线程启动之前运行完成,因此不太可能看到问题。


这是给您的难题。这就造成了僵局,你明白为什么吗?

class A {    static final int i;    static {        i = 128;        Thread t = new Thread() { public void run() {     System.out.println("i=" + i); }        };        t.start();        try {t.join();        } catch (InterruptedException e) {Thread.currentThread().interrupt();        }    }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5615931.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存