如何在完成工作后停止线程?

时间:2014-08-07 05:47:57

标签: java multithreading java-ee

我正在研究Java EE上的Web应用程序。

我在ServletContextLitner创建了一个帖子,所以它在后台的数据库中做了一些条目,用户被发送到它的主页。

我的问题是如何在完成其工作后停止此线程?

4 个答案:

答案 0 :(得分:2)

public void run(){

//Do you work here

return; //However not necessary to mention. 
}

答案 1 :(得分:2)

线程具有run()方法,该方法在线程启动时执行(start())。

方法run()包含Thread的所有逻辑。当方法run()完成时,Thread被标记为gc。

这意味着,只需完成run()JVM即可完成其余工作。

答案 2 :(得分:2)

在大多数情况下,当run()完成时,线程将由jvm停止,但在你的情况下,因为你的上下文是一个监听器,所以我认为你的run()方法有一个循环。所以,我认为你可以在你的循环中使用一个标志,当flag为false时,只需打破循环。

答案 3 :(得分:0)

Java EE规范表明不允许在Java EE应用程序中创建自己的线程。

请参阅http://www.oracle.com/technetwork/java/restrictions-142267.html

  

为什么不允许线程创建和管理?

     

EJB规范为EJB容器分配管理线程的责任。允许企业bean实例创建和管理线程会干扰容器控制其组件的能力。生命周期。线程管理不是业务功能,它是一个实现细节,通常是复杂的和特定于平台的。让容器管理线程可以减轻企业bean开发人员处理线程问题的麻烦。多线程应用程序仍然可行,但多线程控制位于容器中,而不是企业bean中。