簡體   English   中英

擺動和螺紋

[英]Swing and Threads

我有一個Swing界面,當我單擊按鈕時,會在無窮大處創建一個線程(屬while(true)...)。

我的問題是:當我關閉主進程時,創建的線程會自動關閉嗎?

取決於您啟動的線程是否是守護程序線程,以及如何關閉主進程。

以下是標准庫中的相關文檔

Java虛擬機啟動時,通常只有一個非守護線程(通常調用某些指定類的名為main的方法)。 Java虛擬機將繼續執行線程, 直到發生以下任何一種情況

  • 已調用類Runtime的退出方法,並且安全管理器已允許進行退出操作。

  • 不是守護程序線程的所有線程都已死,要么通過從調用返回到run方法,要么拋出傳播到run方法之外的異常。

因此,如果通過System.exit或使用jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)關閉主進程,則所有線程將在您關閉時死亡。

如果僅讓主線程(運行public static void main的線程)脫離main方法的邊緣,那么這些線程將繼續運行。

是的,只要未將其設置為守護程序線程即可。 您可以使用jps工具查看已檢測的JVM:

jps -l

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM