有没有办法使用现有的线程(特别是主线程)来使用AWT窗口。我目前正在打开一个Frame,然后处理所有内容,主线程暂停并等待窗口关闭。对我来说,这看起来像是一种(不是非常具有毁灭性的)资源浪费,所以我只想用AWT的主线。有没有一个很好的理由,为什么没有这样做,如果没有,是否有办法做到这一点?使用现有的Java线程AWT
回答
只要让主线程退出,就没有必要保持它暂停和等待。
线程可以被标记为守护进程或没有。应用程序只在每个非守护线程退出时退出,在Java中,主线程除了首先启动的事实之外没有任何特别的意义。
EDT线程不是一个守护程序线程,所以它会使应用程序保持自己的活动状态。
好吧,我觉得这会关闭整个应用程序。 – th3falc0n
查看扩展的答案。 –
一个暂停的线程(如果它甚至实际上已暂停)是不是一个真正的大问题。我建议你看看你的程序,比如JProfiler,你会对后台发生的事情感到震惊。
基于这个文档http://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html
当Java虚拟机启动时,通常有一个单一的非守护线程(它通常会调用名为main一些指定类的方法)。 Java虚拟机继续执行线程,直到发生以下任一情况:
Runtime类的退出方法已被调用,并且安全管理器已允许执行退出操作。 所有不是守护进程线程的线程都已死亡,无论是从调用返回的run方法还是通过抛出传播超出run方法的异常。
这个故事的寓意:
A Java program will wait for all non-daemon threads to finish first.
在你的情况,你可能想退出主线程。
- 1. Java中的线程。 “AWT-EventQueue-0”java.util.ConcurrentModificationException
- 2. Java异常中的线程“AWT-EventQueue-0”
- 3. 使用在多AWT涂料线程
- 4. 确定AWT线程
- 5. AWT-EventQueue线程和AWT关闭线程不关闭
- 6. 尽管runLater有两个AWT线程?
- 7. 在Java程序中创建和销毁多个AWT关闭和AWT EventQueue线程
- 8. 如何使用java .awt
- 9. 确定使用Java AWT
- 10. AWT事件线程中断
- 11. 线程异常AWT EVENTQUEUE 1
- 12. 什么是AWT-Windows线程?
- 13. 如何选择AWT-EventQueue线程,其中有几个线程
- 14. 的Java Swing异常在线程 “AWT-EventQueue的 - 0”
- 15. 异常在线程“AWT-EventQueue的-0” - 的Java
- 16. Java中的线程“AWT-EventQueue-0”帮助中的异常
- 17. 如何实现java awt/swing应用程序
- 18. Java:线程“AWT-EventQueue-0”中的异常java.lang.NullPointerException
- 19. Java:线程“AWT-EventQueue-0”中的异常java.lang.NullPointerException?
- 20. 线程“AWT-EventQueue-0”中的Java,ArrayList和异常java.util.ConcurrentModificationException
- 21. 异常在Java异常在线程“AWT-EventQueue的-0”显示java.lang.NullPointerException
- 22. 异常在线程“AWT-EventQueue的-0”显示java.lang.NullPointerException在JAVA
- 23. 线程“AWT-EventQueue-0”中的异常java.lang.NullPointerException Java GUI错误
- 24. Java:线程“AWT-EventQueue-0”中的异常java.util.ConcurrentModificationException
- 25. 线程“AWT-EventQueue-0”中的异常java.lang.NullPointerException? Java
- 26. Java异常在线程“AWT-EventQueue的 - 0” java.lang.ArrayIndexOutOfBoundsException:1
- 27. 线程“AWT-EventQueue-0”中的Java异常java.lang.NullPointerException错误
- 28. 如何使用Java AWT的setBackground
- 29. 错误!线程“AWT-EventQueue-0”中的异常java.lang.IllegalStateException:不在FX应用程序线程中; currentThread = AWT-EventQueue-0
- 30. Android图形 - 从现有的AWT应用程序移植
为什么选择AWT而不是Swing?看到我对[Swing extras over AWT]的回答(http://stackoverflow.com/a/6255978/418556)有很多很好的理由放弃使用AWT组件。如果您需要支持较老的基于AWT的API,请参阅[混合重量级和轻量级组件](http://www.oracle.com/technetwork/articles/java/mixing-components-433992.html)。 –
AWT因为我只是打开一个框架为JOGL,并没有任何GUI。 GUI是在OpenGL中手动绘制的 – th3falc0n
谢谢澄清。这是有道理的.. –