I was just trying to create a Thread in a `static` block in Java that caused a deadlock to occur. The code snippet is as follows.
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.
}
}
----------
It just displays *Deadlock detected* on the console and hangs. I guess the reason for the deadlock to occur may be that the `static` block is loaded first before the `main()` method is invoked. Can you see the exact reason for the deadlock in the above code snippet?
以上就是Deadlock caused while creating a Thread in a static block in Java的详细内容,更多请关注web前端其它相关文章!