【发布时间】:2018-09-18 05:57:24
【问题描述】:
我有一个 Java 应用程序,它有一些无限运行的线程轮询后端数据库。当 JVM 关闭时(通过 weblogic UI),我需要为每个线程执行一些清理操作,例如连接到数据库并将正在运行的事务的状态从“进行中”设置为“未处理”。
有没有办法在每个线程中编写一个方法,当线程要被JVM停止时调用?
我知道关闭钩子,但我需要线程中变量的数据来了解在 Db 中要更改的状态,并且在关闭钩子的实现中,似乎启动了一个单独的钩子线程,它不会有来自原始线程。
【问题讨论】:
-
如果您只需要处理正常关闭,您可以使用中断或原子布尔值来识别关闭。
标签: java multithreading shutdown-hook