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