-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
請仔細閱讀線程是如何工作的。 –