我正在研究Java EE上的Web应用程序。
我在ServletContextLitner
创建了一个帖子,所以它在后台的数据库中做了一些条目,用户被发送到它的主页。
我的问题是如何在完成其工作后停止此线程?
答案 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中。