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如何从线程中查看main是否仍在运行?_Java_Multithreading_Playframework - Fatal编程技术网

Java如何从线程中查看main是否仍在运行?

Java如何从线程中查看main是否仍在运行?,java,multithreading,playframework,Java,Multithreading,Playframework,因此,我正在制作我的第一个play framework应用程序,并在第一次加载任何页面时启动一个线程。这很好,但问题是,当我的应用程序停止时,线程不会随之停止。在这个线程中,当我重新启动程序时,服务器套接字witch不会被释放,所以我假设我的线程不会随之退出。那么,当我的应用程序退出时,如何强制我的线程停止呢?您能澄清您的问题并提供示例代码吗 如果您使用Swing或AWT创建了GUI,不处理windowClosing事件将导致GUI关闭,但应用程序仍在控制台/JRE中运行 这很好,但问题是,当我

因此,我正在制作我的第一个play framework应用程序,并在第一次加载任何页面时启动一个线程。这很好,但问题是,当我的应用程序停止时,线程不会随之停止。在这个线程中,当我重新启动程序时,服务器套接字witch不会被释放,所以我假设我的线程不会随之退出。那么,当我的应用程序退出时,如何强制我的线程停止呢?

您能澄清您的问题并提供示例代码吗

如果您使用Swing或AWT创建了GUI,不处理windowClosing事件将导致GUI关闭,但应用程序仍在控制台/JRE中运行

这很好,但问题是,当我的应用程序停止时,线程不会随之停止

(实际上,您的意思是应用程序没有停止。如果应用程序停止,那么所有线程都将停止,应用程序拥有的所有套接字都将关闭。)

处理此问题的简单方法是在启动工作线程之前,通过调用
线程上的
setDaemon(true)
将其标记为“守护线程”

在正常情况下,当某些线程调用
System.exit(…)
,或者最后一个非守护进程线程终止时,JVM将关闭。如果您正在生成未终止的工作线程,它们将导致JVM在“主”线程终止后继续运行。将它们标记为守护进程将避免这种情况


当创建套接字的线程终止时,最好确保套接字关闭。然而,这不是问题所在