使用现有的Thread for Java AWT

时间:2014-01-09 15:23:37

标签: java multithreading awt

有没有办法为AWT窗口使用现有的Thread(特别是主线程)。我正在打开一个Frame,然后处理所有内容,主线程暂停,等待窗口关闭。对我来说,这似乎是一种(并非非常具有破坏性)浪费资源,所以我希望只使用AWT的主线程。有没有一个很好的理由为什么不这样做,如果没有,有没有办法做到这一点?

3 个答案:

答案 0 :(得分:3)

只要让主线程退出,就不需要让它暂停并等待。

线程可以标记为守护进程。应用程序仅在每个非守护程序线程退出时退出,在Java中,主线程除了首先启动之外没有任何特殊意义。

EDT线程不是守护程序线程,因此它会使应用程序自行保持活动状态。

What is Daemon thread in Java?

答案 1 :(得分:2)

基于此文档http://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html

当Java虚拟机启动时,通常会有一个非守护程序线程(通常调用某个指定类的名为main的方法)。 Java虚拟机继续执行线程,直到发生以下任一情况:

已调用类Runtime的exit方法,并且安全管理器已允许执行退出操作。     所有非守护程序线程的线程都已死亡,无论是通过调用run方法返回还是抛出一个超出run方法传播的异常。

故事的道德:

A Java program will wait for all non-daemon threads to finish first. 

在你的情况下,你可能想退出主线程。

答案 2 :(得分:0)

一个暂停的线程(如果它实际上暂停了)并不是什么大不了的事。我建议用JProfiler这样的程序查看你的程序,你会对后台发生的事情感到震惊。