Java 如何停止应用程序';WebSphere下的后台线程

Java 如何停止应用程序';WebSphere下的后台线程,java,multithreading,websphere,Java,Multithreading,Websphere,我们正在WebSphere集群中部署应用程序。应用程序正在运行自己的永不终止线程,这些线程正在检查某些条件,例如: while(true){ logger.severe("Unterminated thread"); Thread.sleep(10000); } 问题是,在WebSphere中停止应用程序(通过wsadmin或管理控制台)后,只有servlet被取消注册,但是 这些线程不是终止线程,并且仍在运行。当我停止应用程序时,有没有办法杀死这个踏板?我们正在使用WebSphere

我们正在WebSphere集群中部署应用程序。应用程序正在运行自己的永不终止线程,这些线程正在检查某些条件,例如:

while(true){
  logger.severe("Unterminated thread");
  Thread.sleep(10000);
}
问题是,在WebSphere中停止应用程序(通过wsadmin或管理控制台)后,只有servlet被取消注册,但是 这些线程不是终止线程,并且仍在运行。当我停止应用程序时,有没有办法杀死这个踏板?我们正在使用WebSphere7


谢谢

您不应该从JavaEE应用程序手动创建线程。线程管理应该由JavaEE容器提供


WebSphere有一个WorkManager机制来帮助您满足线程需求。请查看实施细节。

根据您对另一个答案的评论,我有一个建议。(注意,我同意Oleg的观点,你真的不应该这样做,但如果你必须这样做的话…)

我假设在这个代码来自的常规Java应用程序中,这些后台线程不知何故接收到停止的信号。我的建议是,当您的servlet全部注销时,使用发送停止信号


请注意,如果您还没有办法告诉线程停止,那可能是另一个错误,这根本没有任何帮助。

您好,是的,我理解问题是,它不希望它将在应用程序容器中运行,并且它已作为普通java应用程序编写。非常感谢,这看起来是修复应用程序的最快方法。嗨!但是假设应用程序已经部署并运行,您不想停止服务器,但需要终止挂起的线程。有可能吗?@ACosta,除非你已经有某种机制告诉那些线程停止,那么据我所知,不,你不能只是“进入”某个地方并停止它们。我必须在安装应用程序的服务器上的websphere管理控制台中运行Terminate,否则我将无法停止它!