av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

在Java程序的主線程中調用System.exit(0)和Thread.currentThread()。interrupt()有什么區(qū)別?

瀏覽:108日期:2024-04-30 13:01:42
如何解決在Java程序的主線程中調用System.exit(0)和Thread.currentThread()。interrupt()有什么區(qū)別??摘要thread.interrupt()不停止線程。它用于多線程程序中的協調。除非您確切知道自己的工作,否則不要使用它。拋出RuntimeException遺囑(通常)會終止線程,但不一定終止程序。System.exit(int) 幾乎 總是終止程序并返回狀態(tài)碼。在特殊情況下,System.exit(int)可能實際上并未停止該程序。Runtime.getRuntime().halt(int)另一方面,總是如此。線程中斷

恐怕你的第一句話錯了。Thread.currentThread().interrupt()不會停止線程或程序。

中斷線程是發(fā)信號通知它 應該 停止的一種方式,但這是一種合作的努力:線程中的代碼應不時檢查中斷狀態(tài),并且(在大多數情況下-但這只是可選的)如果已被中斷則停止。如果不這樣做,將不會發(fā)生任何事情。

具體來說,中斷線程(任何線程,包括當前正在執(zhí)行的線程)只會設置 中斷標志。標準庫中的某些方法將引發(fā)InterruptedException,但這也只是一種信號,表明線程已被中斷。在這種情況下應該做什么取決于該線程中運行的代碼。

以下是Brian Goetz撰寫的 Java Concurrency in Practice 一書中的相關部分:

線程提供了用于中斷線程和查詢線程是否已被中斷的中斷方法。每個線程都有一個布爾屬性,表示其中斷狀態(tài)。中斷線程將設置此狀態(tài)。

中斷是一種合作機制。一個線程無法強迫另一個線程停止正在執(zhí)行的操作并執(zhí)行其他操作。當線程A中斷線程B時,A只是請求B在感覺到方便的停止點時停止其正在做的事情。盡管API或語言規(guī)范中沒有任何內容要求任何特定的應用程序級語義中斷,中斷最明智的用途是取消活動。響應中斷的阻止方法使更容易及時取消長時間運行的活動。

異常和System.exit(int)

的JavadocSystem.exit(int)說:

參數用作狀態(tài)碼;按照慣例,非零狀態(tài)代碼表示異常終止。

因此,調用exit()(幾乎)肯定會停止您的程序。與RuntimeException引發(fā)(或Error)相比,它不能在調用堆棧的下方捕獲,它也不取決于是否正在運行其他線程。另一方面,未捕獲的異常會終止引發(fā)該異常的線程,但是如果有其他(非守護程序)線程,該程序將繼續(xù)運行。

引發(fā)Exception的另一個區(qū)別是不會exit()將任何內容打印到控制臺(未捕獲的異常也是如此),而是使程序返回特定的狀態(tài)代碼。狀態(tài)代碼有時用在Shell或批處理腳本中,但除此之外,它們不是很有用。

Runtime.halt(int)

最后(出于完整性考慮),我想指出退出Java程序的第三種可能性。當System.exit(int)調用(或程序以其他方式結束)時,運行時將在Java虛擬機停止之前執(zhí)行一些清理工作。這在Runtime.exit(int)的Javadoc中進行了描述(稱為System.exit(int):

虛擬機的關閉序列包括兩個階段。在第一階段,所有已注冊的關閉掛接(如果有)以某種未指定的順序啟動,并允許并發(fā)運行直到它們完成。在第二階段,如果啟用了退出時終結,則所有未調用的終結器都將運行。完成此操作后,虛擬機將停止。

如果由于死鎖等原因導致任何關閉掛鉤或終結器無法完成,則該程序可能永遠不會真正退出。保證JVM停止的唯一方法是Runtime.halt(int):

使用此方法時應格外小心。與退出方法不同,此方法不會導致啟動關閉掛鉤,并且如果啟用了退出時終結處理,則不會運行未調用的終結器。

解決方法

兩者都會導致程序停止執(zhí)行。顯然,這種情況的發(fā)生方式必須有所不同。這些是什么?

標簽: java
相關文章:
主站蜘蛛池模板: 日韩精品不卡 | 亚洲国产精品久久久 | 久久精品播放 | 中文字幕精品视频在线观看 | 亚洲第一视频网 | 毛片在线免费 | 国产精品久久久久久久久久久久 | 国产成人免费视频 | 亚洲精品2 | 亚洲国产18 | 日韩av成人| 国产一级毛片视频 | 亚洲精品国产电影 | 亚洲国产一区二区视频 | 麻豆久久精品 | 国产91色在线 | 亚洲 | 日韩在线播放第一页 | 免费簧片视频 | 久久精品一区 | 免费亚洲网站 | 天天干天天想 | 久久国产精品一区 | 日本视频一区二区三区 | 日日干日日 | 久久久国产一区二区三区四区小说 | 国产精品久久 | 99精品视频在线 | 欧美一区二区三区在线观看 | 一区二区三区四区在线视频 | 久久国产成人精品国产成人亚洲 | 日产精品久久久一区二区福利 | 日韩激情免费 | 黄色大片免费观看 | 国产精品久久久久久妇女6080 | 欧美激情欧美激情在线五月 | 91久色| 色噜噜亚洲男人的天堂 | 日本成人午夜影院 | 精品二 | 精品久久久久久久久久久院品网 | 国外激情av |