在一个关闭钩子方法中,我需要它向另一个进程发送一条消息,说它已经关闭。我当前的消息处理代码要求将消息写入队列,此队列由另一个线程处理并发送到任何地方。在这种情况下,由另一个线程写入管道文件。
在关闭钩子中,我可以保证这些线程仍然会运行吗?我有几个关闭钩子,但这些都是处理其他不需要其他线程的东西。
执行很少。它将运行大约15行代码+写入文件所需的任何等待,这也应该是最小的。
答案 0 :(得分:4)
来自addShutdownHook的Javadoc描述:
“请注意,守护程序线程将在关闭序列期间继续运行,如果通过调用退出方法启动关闭,非守护程序线程将继续运行。”
鉴于此,我会说可以安全地假设您的线程仍在运行,并且您可以与之通信。我唯一要警告的是依靠你的关闭钩子以确定的顺序运行。
答案 1 :(得分:0)
听起来你需要一个多步骤的关机过程。在多线程环境中,我不会指望简单地评估您需要执行的代码行,以便为您提供关闭程序的指导......