我们编写了一个 java 代理,其中包括使用 java.awt.TrayIcon 提供某种 GUI。当我们在例如Tomcat中使用这个代理时,我们会遇到以下问题:
- 用户使用 shell 脚本启动 Tomcat
- 我们的代理将图标添加到系统托盘
- 用户使用 shell 脚本关闭 Tomcat
- AWT 事件线程看到,仍然有可显示的组件、系统托盘图标,并且没有退出
- 由于 AWT 事件线程是非守护线程,整个应用程序无法退出
现在的问题是,我们应该怎么做才能让应用程序关闭?是否可以制作 AWT 事件调度线程守护进程?代理是否有关闭挂钩?还要别的吗?