我在這樣的網頁上有一個簡單的小程序。 (這是一個從更復雜的小程序中刪除的測試用例)。爲什麼Firefox在20秒後終止我的小程序?
package test;
import java.applet.Applet;
@SuppressWarnings("serial")
public class SimpleLoopApplet extends Applet
{
public void init()
{
System.out.println("SimpleLoopApplet invoked");
try
{
while (true)
{
try
{
System.out.println("Sleep for 1 second");
Thread.sleep(1000);
}
catch (InterruptedException e)
{
System.out.println("Applet thread interrupted while sleeping");
}
}
}
finally {}
}
}
在Firefox 3.6.8一臺計算機上此applet將20秒運行,然後退出突然,彷彿VM正在終止(Java控制檯將消失;在Java圖標將保留在系統托盤,直到我將鼠標懸停在它上面; finally塊永遠不會到達)。
持續20秒。 20從上面的代碼打印「睡眠1秒」,如果我將睡眠延長至5秒,則在終止前打印4條消息。
在同一臺計算機上的IE和Chrome中,循環將無限期地繼續,因爲它將在不同的計算機上的Firefox 3.6.8中繼續。
任何人都可以提出爲什麼小程序可能以這種方式終止?
感謝josefx和stacker提出了幾乎相同和基本正確的答案。 FWIW,把循環放在'start'而不是'init'沒有什麼區別,但是創建一個單獨的線程並沒有解決問題。 – Alohci 2010-08-31 13:13:42