簡體   English   中英

如果Java中的線程停止是如此尷尬,那么Eclipse如何設法如此快速地停止線程?

[英]How does Eclipse manage to stop threads so fast , if thread stopping is so awkward in Java?

如果這個問題聽起來很冒昧,我事先表示歉意。 我對此很陌生。 所以就這樣。

我一直在研究“ java線程停止”問題。 我閱讀了許多有關stackoverflow的文章,其中大多數得出的結論是Java中線程停止非常尷尬。 一些好的方法包括:

  1. 使用join這個答案有87個贊成票),並等待直到線程完成。
  2. 設置一個volatile標志以發信號通知其他線程。 這個答案有113票贊成
  3. 許多人推薦Thread.interrupt() ,以后再檢查isInterrupted
  4. 一些建議使用高級API,例如ExecutorService。 但是該shutdownNow方法不提供任何保證,並且依賴於isInterrupted布爾值

但是以上兩種方法都不允許立即停止線程。 例如,如果程序正在運行某些SQL並等待外部數據庫響應,則上述所有方法將“虛心等待”,直到該SQL完成。 因此,停止根本不是立即的。 僅當該SQL完成(可能需要幾個小時)后,程序才會檢查isInterrupted或其他標志,然后停止

這是重點。 我知道Eclipse是根據這個 stackoverflow答案用java編寫的。 每當我單擊該紅色的停止按鈕時,Eclipse都會立即停止我的應用程序。 我認為它不使用Thread.stop因為它已被棄用。 但是我不可能使用在stackoverflow上推薦的那些方法。 Eclipse如何設法如此快地停止線程?

當您從Eclipse中運行Java程序時,會在新的Process中創建一個全新的JVM以運行該程序。 進程與線程不是同一回事。

在Eclipse中,該過程由java.lang.Process類表示。 當您停止程序時,Eclipse會調用Processdestroy()方法。

因此,Eclipse用於此目的與線程無關。

暫無
暫無

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

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