Max*_*ler 2 java application-shutdown threadpool shutdown-hook
我正在编写一个理论上可以在不同环境中使用的Java客户端:Java main(),servlet容器或依赖注入.
客户端实现内部连接线程池.
这种方法的问题在于,客户端的用户不知道实现内部线程池的事实将使他或她的应用程序在关闭时"挂起".我的用户需要知道向库发送shutdown()消息.
我想知道是否可以采取任何其他替代方法,一方面,允许我为我的连接启动一个线程池; 而且,另一方面,捕获一些事件,可能是一个JVM事件,表明JVM正在关闭,这将允许我调用我的shutdown()实现.
虽然你可以添加钩子,如前所述,你仍然可能遇到的问题是线程池仍然有活动线程.
我相信如果你将你的个别线程标记为"守护进程"(通过Thread.setDaemon方法),那么如果只剩下守护进程线程,JVM将无法保持活动状态.
来自JavaDoc:
将此线程标记为守护程序线程或用户线程.当运行的唯一线程都是守护程序线程时,Java虚拟机将退出.
使用此方法,如果您的主要非守护程序线程被终止,则由于另一个线程正在运行,JVM将不会"挂起",这会触发您的关闭挂钩,而不必向各个线程显式发送终止指令.
| 归档时间: |
|
| 查看次数: |
4111 次 |
| 最近记录: |