我在下面编写的代码是代码
public class StaticDeadlock
{
private static final Object o = new Object();
static {
MyThread thread = new MyThread();
thread.start();
try {
thread.join();
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void main (String[] args)
{
System.out.println("all is well.");
}
static class MyThread extends Thread
{
@Override
public void run ()
{
System.out.println("inside mythread");
o.getClass();
}
}
}
我在 static 块中调用thread.join()
,这使我的主线程等到我的线程在静态块中声明完成并且此线程正在调用o.getClass();
其中“ o“是运行代码时static final Object o = new Object();
的实例我的主线程和我的静态块线程获得死锁。我想确认这真的是一个死锁或其他一些问题。执行程序时的下面的输出。
输出:
inside mythread
未完成该计划。有什么建议吗?