有沒有辦法使用現有的線程(特別是主線程)來使用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
謝謝澄清。這是有道理的.. –