引用Java 教程:
Java 插件软件为每个 Java 小程序创建一个工作线程。
在多线程环境中,您应该非常小心共享资源。最好和最简单的方法是不共享任何东西(规模最好并且不会出现死锁)。
我假设,您每次都在“init”方法中初始化您的处理程序。如果是这样,您应该使用一个静态共享记录器(检查此链接)。这将有助于稍微改善情况,但如果您使用您的小程序启动多个浏览器 - 仍将创建新的日志文件。Oracle 不建议使用此解决方法,并保留此解决方法以实现向后兼容性。
推荐且易于实施的解决方案 - “每个小程序都应该有自己的记录器并写入自己的文件”。生成日志文件名的代码:
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
private String generateFileName() {
return String.format("applets-log/%s-%s.log", dateFormat.format(new Date()), UUID.randomUUID());
}
此外,Applet 开发的最佳实践。
回答您的小问题(已更改):
根据对 java 插件中这个旧 bug的讨论,applet 可以在任何时候以一些预定义的时间间隔终止以进行清理。因此,您应该将资源清理代码放在“停止”或“销毁”方法中,但您不应该依赖该代码将执行的内容。
Applet 的生命周期由浏览器控制,当其托管文档被浏览器破坏时,不应赋予 Applet 运行的能力。
从 6u10 开始,旧插件和新插件都会在固定时间(旧插件中为 1000 毫秒,新插件中为 200 毫秒)后强制关闭小程序,以使小程序停止。