关闭钩子可以依赖另一个线程吗?

时间:2009-10-22 14:18:53

标签: java multithreading application-shutdown

在一个关闭钩子方法中,我需要它向另一个进程发送一条消息,说它已经关闭。我当前的消息处理代码要求将消息写入队列,此队列由另一个线程处理并发送到任何地方。在这种情况下,由另一个线程写入管道文件。

在关闭钩子中,我可以保证这些线程仍然会运行吗?我有几个关闭钩子,但这些都是处理其他不需要其他线程的东西。

执行很少。它将运行大约15行代码+写入文件所需的任何等待,这也应该是最小的。

2 个答案:

答案 0 :(得分:4)

来自addShutdownHook的Javadoc描述:

“请注意,守护程序线程将在关闭序列期间继续运行,如果通过调用退出方法启动关闭,非守护程序线程将继续运行。”

鉴于此,我会说可以安全地假设您的线程仍在运行,并且您可以与之通信。我唯一要警告的是依靠你的关闭钩子以确定的顺序运行。

答案 1 :(得分:0)

听起来你需要一个多步骤的关机过程。在多线程环境中,我不会指望简单地评估您需要执行的代码行,以便为您提供关闭程序的指导......

相关问题