Java如何从线程中查看main是否仍在运行?
因此,我正在制作我的第一个play framework应用程序,并在第一次加载任何页面时启动一个线程。这很好,但问题是,当我的应用程序停止时,线程不会随之停止。在这个线程中,当我重新启动程序时,服务器套接字witch不会被释放,所以我假设我的线程不会随之退出。那么,当我的应用程序退出时,如何强制我的线程停止呢?您能澄清您的问题并提供示例代码吗 如果您使用Swing或AWT创建了GUI,不处理windowClosing事件将导致GUI关闭,但应用程序仍在控制台/JRE中运行 这很好,但问题是,当我的应用程序停止时,线程不会随之停止 (实际上,您的意思是应用程序没有停止。如果应用程序停止,那么所有线程都将停止,应用程序拥有的所有套接字都将关闭。) 处理此问题的简单方法是在启动工作线程之前,通过调用Java如何从线程中查看main是否仍在运行?,java,multithreading,playframework,Java,Multithreading,Playframework,因此,我正在制作我的第一个play framework应用程序,并在第一次加载任何页面时启动一个线程。这很好,但问题是,当我的应用程序停止时,线程不会随之停止。在这个线程中,当我重新启动程序时,服务器套接字witch不会被释放,所以我假设我的线程不会随之退出。那么,当我的应用程序退出时,如何强制我的线程停止呢?您能澄清您的问题并提供示例代码吗 如果您使用Swing或AWT创建了GUI,不处理windowClosing事件将导致GUI关闭,但应用程序仍在控制台/JRE中运行 这很好,但问题是,当我
线程上的setDaemon(true)
将其标记为“守护线程”
在正常情况下,当某些线程调用System.exit(…)
,或者最后一个非守护进程线程终止时,JVM将关闭。如果您正在生成未终止的工作线程,它们将导致JVM在“主”线程终止后继续运行。将它们标记为守护进程将避免这种情况
当创建套接字的线程终止时,最好确保套接字关闭。然而,这不是问题所在