我知道当没有其他非守护进程线程处于活动状态时,所有守护进程线程都应该被终止。 我正在开发从静态对象获取数据的小程序。这些静态对象正在守护进程线程中从远程服务器下载一些数据。几个applet可以访问相同的数据,所以对每个applet运行线程都没有意义。 问题是我重新加载页面时。小程序正在重新加载,并且它们在这些静态对象中注册,除了JVM杀死守护进程线程之外,一切都会很好。Java在applet重新加载中杀死守护进程线程
也许我一步解释步骤:
- Applet是装载和它在静态对象,它提供数据寄存器。
- 静态对象启动守护进程线程。
- 页面重新加载。
- 小程序正在卸载(stop()和destroy()被调用)
- 新的applet实例正在创建并在静态对象中注册。
- JVM在守护程序线程中抛出ThreadDeath,通信停止。
在我看来,第6步应该是在4之前和之前5. 我是否错过了什么?
我开发的解决方法是在注册静态对象之前先休眠一段时间,让JVM杀死守护进程,然后创建自动守护进程,但这只是一种解决方法。有没有更好的解决方案?
因为可以有另一个applet实例或其他对象等待来自服务器的数据。问题在于当守护进程被JVM杀死的时候不是为什么。 – BeginEnd 2011-04-20 10:04:44