如果main仍在运行,Java如何从线程中看到?

时间:2013-12-01 15:11:12

标签: java multithreading playframework

所以我正在制作我的第一个播放框架应用程序,当我第一次加载任何页面时,我正在启动一个线程。这工作正常,但问题是,当我的应用程序停止时,线程不会停止。在这个线程中我有服务器套接字巫婆没有被释放,当我重新启动我的程序所以我假设我的线程不会退出它。那么当我的应用程序退出时,如何强制我的线程停止?

2 个答案:

答案 0 :(得分:2)

  

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

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

处理这个问题的简单方法是在工作线程启动之前调用setDaemon(true)上的Thread,将工作线程标记为“守护程序线程”。

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


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

答案 1 :(得分:0)

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

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