Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中终止线程?_Java_Multithreading_Jsp_Tomcat - Fatal编程技术网

如何在java中终止线程?

如何在java中终止线程?,java,multithreading,jsp,tomcat,Java,Multithreading,Jsp,Tomcat,我有一个jsp页面,每当用户登录该页面时,该页面就会启动一个线程。但我想要的是,只有一个线程实例必须运行,即,即使用户在该页面上登录n次,也只有一个线程应该运行。当前,每当用户登录一个我不想要的新线程时。为此,我必须检查一个线程是否已经运行,如果已经运行,那么我不会启动另一个线程,或者我可以杀死已经运行的线程并启动一个新线程。现在,问题是我如何才能做到这一点?我是java编程新手,所以我不知道我的选择 为什么不直接检查oldThread.isAlive()?如果返回true,则停止生成新线程 顺

我有一个jsp页面,每当用户登录该页面时,该页面就会启动一个线程。但我想要的是,只有一个线程实例必须运行,即,即使用户在该页面上登录n次,也只有一个线程应该运行。当前,每当用户登录一个我不想要的新线程时。为此,我必须检查一个线程是否已经运行,如果已经运行,那么我不会启动另一个线程,或者我可以杀死已经运行的线程并启动一个新线程。现在,问题是我如何才能做到这一点?我是java编程新手,所以我不知道我的选择

为什么不直接检查
oldThread.isAlive()
?如果返回true,则停止生成新线程

顺便说一句,您应该使用
ExecutorService
进行此类操作


此外,您不能在Java中实际杀死线程。线程执行完成后,其状态将被终止。

检查用户是否已经有会话,如果用户已经有会话,则不要启动线程


事实上,如果用户已经有会话,不要让他进入登录页面,而是进入首页,如果他愿意,他可以注销,然后重新登录。

可能是重复的我已经阅读了答案,但找不到我问题的答案这就是为什么我问了一个新问题。你需要在你的问题中解释为什么这不是该问题的重复。问题的相同标题并不意味着问题相同。我不明白我该怎么做?我的意思是,每当用户进入jsp页面时,它都是该页面的一个新实例。我该如何获取该旧线程的信息?不,我不知道。还有其他解决方案吗?我该如何获取关于前一个线程的任何信息,以便我可以检查它是否在运行,下一次?我有一个疑问。当会话丢失时?我的意思是当tomcat关闭或应用程序关闭时,会话被删除?如果容器关闭,你真的不需要再关心任何事情了。你能解释一下吗?因为我是这方面的新手?这有点像问你什么时候关闭计算机。显然,用户将无法访问任何内容,任何登录的用户肯定不会再登录(也不会运行任何线程)。事实上,关闭tomcat相当于关闭计算机,因为JVM将被关闭。我想问的是会话何时被删除?我的意思是,如果会话在我关闭webapp时被删除,那么这对我没有任何用处。例如,用户登录和线程开始运行,但用户关闭应用,但线程仍在后台运行…以及用户登录时再次..它将是一个nw sesiion,然后另一个线程将启动,它将创建我不想要的该线程的多个实例。。