【发布时间】:2011-12-23 17:15:34
【问题描述】:
我只是试图在 Java 中的 static 块中创建一个线程,导致死锁发生。代码sn-p如下。
package deadlock;
final public class Main
{
static int value;
static
{
final Thread t = new Thread()
{
@Override
public void run()
{
value = 1;
}
};
t.start();
System.out.println("Deadlock detected");
try
{
t.join();
}
catch (InterruptedException e)
{
System.out.println(e.getMessage());
}
System.out.println("Released");
}
public static void main(String...args)
{
//Java stuff goes here.
}
}
它只是在控制台上显示检测到死锁并挂起。我猜发生死锁的原因可能是在调用main() 方法之前先加载了static 块。在上面的代码sn -p中你能看出死锁的确切原因吗?
【问题讨论】:
-
是的,
static块在main()之前执行。
标签: java multithreading deadlock