如果在打印第一行之后并在调用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(); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)