我尝试使用以下代码,似乎是一个死锁场景
public class MyThread {
public static void main(String[] args) {
try {
Thread.currentThread().join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
但我怀疑情况并非如此。它不是僵局。我理解的是Main
线程正在等待它自己的完成。我深入研究了它,但是join中的wait方法是原生的,我无法获得更多信息。
答案 0 :(得分:2)
来自维基百科
"死锁是指两个或多个竞争行为各自等待另一个完成的情况,因此两者都没有。"
在这种情况下,您正在等待线程完成,并且该线程正在等待任务完成。虽然你只有一个线程,但仍然存在死锁恕我直言。
仅供参考,看看您是否能够发现此代码中的死锁。
public class Main {
static String HI = "Hello World";
static {
Thread t = new Thread() {
@Override
public void run() {
System.out.println(HI);
}
};
t.start();
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main(String... args) {
}
}
顺便说一下如果你让HI
最终确定它并不会死锁。 ;)