-3
我调试此代码,我不明白为什么我会死锁。当你执行这段代码时,它看起来像是连接方法中的主线程锁,而另一个线程正在等待获取锁。Java - Thread.join()不释放锁
public class Foo {
private final Thread thread;
public Foo() {
thread = new Thread(new Bar(), "F");
thread.start();
}
public void run() {
synchronized (this) {
thread.interrupt();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Foo run method");
}
}
private final class Bar implements Runnable {
@Override
public void run() {
synchronized (Foo.this) {
System.out.println("Bar run method");
}
}
}
public static void main(String[] args) throws InterruptedException {
final Foo foo = new Foo();
foo.run();
}
}
感谢您的帮助!
我不明白它是什么,你不”不明白。 'Thread.join()'等待目标线程完成。 Javadoc没有任何关于释放锁的信息。你做到了。 – EJP
请仔细阅读线程是如何工作的。 –