gpt4 book ai didi

javaagent、系统托盘和关机

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:17 25 4
gpt4 key购买 nike

我们编写了一个 java 代理,其中使用 java.awt.TrayIcon 提供某种 GUI。当我们使用此代理时,例如Tomcat,我们遇到以下问题:

  1. 用户使用 shell 脚本启动 Tomcat
  2. 我们的代理将图标添加到系统托盘
  3. 用户使用 shell 脚本关闭 Tomcat
  4. AWT 事件线程发现仍然有可显示的组件、系统托盘图标,并且不退出
  5. 由于AWT Event线程是非守护线程,整个应用程序无法退出

现在的问题是,我们应该怎么做才能允许应用程序关闭?是否可以制作 AWT 事件调度线程守护程序?是否有针对代理的关闭 Hook ?还有什么吗?

最佳答案

为了完整起见,以下是我解决此问题的方法:

我已经启动了另一个守护进程线程来执行该作业,该线程定期检查可显示的 AWT 组件。如果只剩下其中一个,那就是我的系统托盘图标,那么我会将其删除。这允许 AWT 子系统退出,从而导致整个应用程序正常退出。

关于javaagent、系统托盘和关机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9873592/

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