1

Weblogic server (WLS). _ 要正常关闭池,我需要调用shutdown()该池。但是由于我无法控制的原因,我无法在此 WLS 中添加任何应用程序生命周期侦听器,这意味着我没有任何关闭挂钩来调用此方法。所以我正在考虑将池中的线程作为守护线程,这样WLS JVM当它关闭时就不会等待这些线程完成。否则 JVM 不会正常关闭,因为池中的核心线程始终在运行。

将线程池中的线程作为守护进程有什么缺点吗?我了解守护线程,当JVM退出时,这些线程永远不会被正常清理,任何运行的东西都不会正常完成。此问题仅在关机阶段。

在线程池中创建线程守护程序还有其他问题吗?(或更好的方法)

4

2 回答 2

1

鉴于您在应用程序容器中,您可能希望按照@mprabhat 的建议使用工作管理器。但是,如果您确实需要受您控制的线程,您仍然可以将它们关闭。WebLogic 通过关闭钩子实现它的应用程序生命周期通知。您仍然可以使用该机制。您可以使用Runtime.addShutdownHook注册一个。不要忘记快速完成工作。WebLogic有超时,所以关闭顺序基本是:

  1. 请求关闭(通过 System.exit() 或发送到 JVM 进程的信号)。
  2. 您的关闭挂钩和 WebLogic 的关闭挂钩执行。
  3. 在一些超时(我认为是 5-10 秒)之后,WebLogic 的关闭挂钩之一调用 System.halt()。
  4. 无论关闭挂钩是否完成,JVM 都会终止。
于 2012-06-07T11:41:06.800 回答
1

请参考下面的链接,我建议同时使用 java 7 线程

http://www.baptiste-wicht.com/2010/09/java-concurrency-part-7-executors-and-thread-pools/

请享用

于 2012-06-07T11:41:41.627 回答