類DaemonThread繼承Thread {終於方法與嘗試在Java中
public void run() {
System.out.println("Entering run method");
try {
System.out.println("In run Method: currentThread() is"
+ Thread.currentThread());
while (true) {
try {
Thread.sleep(500);
} catch (InterruptedException x) {
System.out.println("hi");
}
// System.out.println("In run method: woke up again");
finally {
System.out.println("Leaving run1 Method");
}
}
} finally {
System.out.println("Leaving run Method");
}
}
public static void main(String[] args) {
System.out.println("Entering main Method");
DaemonThread t = new DaemonThread();
t.setDaemon(true);
t.start();
try {
Thread.sleep(900);
} catch (InterruptedException x) {}
System.out.println("Leaving main method");
}
}
爲什麼第二終於方法不能運行......我知道最後的方法必須具有運行任何條件在這種情況下..但只有第一個最後的方法,爲什麼不第二個終於跑。
您如何期望退出'while循環以便第二個'finally'被執行? –
第一個打印一個誤導消息。它根本不會離開run()方法,也不會離開while循環:它只是睡眠的結束。你迷惑自己。 – EJP
良好的抓住@EJP,我甚至沒有看到打印消息。 –