У меня есть простой апплет на такой веб-странице. (Это тестовый пример, вырезанный из более сложного апплета).
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 на одном компьютере этот апплет будет работать в течение 20 секунд, а затем внезапно завершит работу, как если бы виртуальная машина заканчивала работу (консоль Java исчезнет; значок Java останется в системном трее, пока я не наведу на него курсор мыши ; блок finally никогда не достигается).
Это последовательно 20 секунд. 20 "Сон на 1 секунду" напечатан из вышеприведенного кода, если я увеличу время ожидания до 5 секунд, то перед завершением будут напечатаны 4 сообщения.
В IE и Chrome на одном компьютере цикл будет продолжаться бесконечно, как и в Firefox 3.6.8 на другом компьютере.
Кто-нибудь может подсказать, почему апплет может завершиться таким образом?