[英]How does Eclipse manage to stop threads so fast , if thread stopping is so awkward in Java?
如果這個問題聽起來很冒昧,我事先表示歉意。 我對此很陌生。 所以就這樣。 。 。
我一直在研究“ java線程停止”問題。 我閱讀了許多有關stackoverflow的文章,其中大多數得出的結論是Java中線程停止非常尷尬。 一些好的方法包括:
join
( 這個答案有87個贊成票),並等待直到線程完成。 volatile
標志以發信號通知其他線程。 這個答案有113票贊成 Thread.interrupt()
,以后再檢查isInterrupted
shutdownNow
方法不提供任何保證,並且依賴於isInterrupted
布爾值 但是以上兩種方法都不允許立即停止線程。 例如,如果程序正在運行某些SQL
並等待外部數據庫響應,則上述所有方法將“虛心等待”,直到該SQL
完成。 因此,停止根本不是立即的。 僅當該SQL
完成(可能需要幾個小時)后,程序才會檢查isInterrupted
或其他標志,然后停止
這是重點。 。 。 我知道Eclipse是根據這個 stackoverflow答案用java
編寫的。 每當我單擊該紅色的停止按鈕時,Eclipse都會立即停止我的應用程序。 我認為它不使用Thread.stop
因為它已被棄用。 但是我不可能使用在stackoverflow上推薦的那些方法。 Eclipse如何設法如此快地停止線程?
當您從Eclipse中運行Java程序時,會在新的Process中創建一個全新的JVM以運行該程序。 進程與線程不是同一回事。
在Eclipse中,該過程由java.lang.Process
類表示。 當您停止程序時,Eclipse會調用Process
的destroy()
方法。
因此,Eclipse用於此目的與線程無關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.