gpt4 book ai didi

java - 为什么 Firefox 会在 20 秒后终止我的小程序?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:57:01 26 4
gpt4 key购买 nike

我在这样的网页上有一个简单的小程序。 (这是从一个比较复杂的小程序上砍下来的测试用例)。

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 秒然后突然退出,就好像 VM 正在终止一样(Java 控制台将消失;Java 图标将保留在系统托盘中,直到我将鼠标悬停在它上面; 永远不会到达 finally block )。

始终是 20 秒。上面的代码打印了 20 个“hibernate 1 秒”,如果我将 hibernate 延长到 5 秒,那么在终止前会打印 4 条消息。

在同一台计算机上的 IE 和 Chrome 中,循环将无限期地继续下去,就像在不同计算机上的 Firefox 3.6.8 中一样。

谁能提出为什么小程序会以这种方式终止?

最佳答案

来自小程序tutorial

init Method

The init method is useful for one-timeinitialization that doesn't take verylong. The init method typicallycontains the code that you wouldnormally put into a constructor. Thereason applets don't usually haveconstructors is that they aren'tguaranteed to have a full environmentuntil their init method is called.Keep the init method short so thatyour applet can load quickly.

start Method

Every applet that performs tasks afterinitialization (except in directresponse to user actions) mustoverride the start method. The startmethod starts the execution of theapplet. It is good practice to returnquickly from the start method. If youneed to perform computationallyintensive operations it might bebetter to start a new thread for thispurpose.

看来您必须为长时间运行的方法创建自己的线程。

关于java - 为什么 Firefox 会在 20 秒后终止我的小程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3608581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com