簡體   English   中英

JFrame以及為何繼續運行

[英]JFrame and why stay running

為什么要創建一個JFrame,然后程序仍然運行,直到(即)我用窗口的小“退出按鈕”將其關閉?

我尋找這個答案,但失敗了。 我猜到的唯一一件事是,當我執行new JFrame()它就像一個特殊的new ,它在EDT中保留了對對象的引用,因此它將始終被引用(即使是匿名的“ new”)也並非如此。將被垃圾收集器刪除。 然后,一旦觸發Windows關閉事件,該對象便被取消引用並銷毀。

試試, yourFrame.setCloseOperation(JFrame.EXIT_ON_CLOSE)

它保持運行的原因是所謂的事件分派線程一直在后台運行,並且只要您有非守護程序線程在運行,應用程序就不會終止。 從線程的文檔:

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

  • 已調用類Runtime的退出方法,並且安全管理器已允許進行退出操作。
  • 不是守護程序線程的所有線程都已死,要么通過從調用返回到run方法,要么拋出傳播到run方法之外的異常。

不是從“ gui-thread”開始的JFrame的創建 當該框架變得可見並且可能需要調度事件時,將啟動此線程。

暫無
暫無

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

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