2012-04-07 51 views
2

我想正常關閉線程。我在網上看到很多代碼,並在這裏查詢。 我認爲有兩種關機的方法。中斷Java中的線程

  1. 使用布爾標誌。一旦標誌chnages,我們可以在運行方法中破壞代碼。
  2. 使用中斷方法。

我的問題爲什麼避免使用布爾標誌來正常關閉線程,當我運行示例程序時,它運行良好。

回答

5

沒有什麼錯boolean標誌,但是:

  • 你需要記住的同步/能見度(至少在標誌放volatile

  • 爲什麼增加一個額外的標誌,當一個已經實施(interrupted)?

  • 其他庫/容器可能試圖打斷你的線程(畢竟,他們不知道你的標誌!),所以你仍然需要支持InterruptedException和/或isInterrupted()標誌

  • 中斷線程也中斷I/O調用和Thread.sleep()。您的自定義標誌不能