回答
從你以前的問題來看,我假設你對Java的行爲感興趣。
在Java中,如果線程當前阻塞,則會引發InterruptedException
。如果線程未被阻塞,則不會拋出異常。
欲瞭解更多信息,請看這裏:
JavaDocs
對於.NET語言中,ThreadInterruptedException
會如果線程當前正在阻止被拋出。如果線程沒有被阻塞,那麼在線程阻塞之前不會拋出異常。
請用您希望回答的語言標記您的問題。
中斷一個線程是一種狀態安全的方法來取消它,但線程本身必須編碼以關注中斷。長時間,如果在執行該線程時發生.interrupt()
,阻止拋出InterruptedException
的Java操作將拋出該異常。
.interrupt()
方法設置該線程的「中斷」標誌並中斷任何IO或睡眠操作。它什麼都不做,所以這取決於您的程序是否適當地進行響應 - 並通過Thread.interrupted()
定期檢查其中斷標誌。
如果一個線程不檢查中斷,它不能安全地停止。 Thread.stop()
is unsafe to use.因此,您使用.interrupt()
停止線程,但是在編寫多線程代碼時,要確保.interrupt()
能夠做出明智的做法取決於您。 This TechRepublic article is a pretty good tutorial.
**嗨亞當,**我認爲***「長,阻止拋出InterruptedException的Java操作將拋出該異常,如果一個.interrupt()發生時,該線程正在執行」***是有種其他的方式。你說一個**線程阻塞**,那麼這是因爲:1)它已經進入睡眠一段時間2)它暫停了一個調用suspend()並將被阻塞,直到一個resume()消息3)線程通過wait()方法被掛起,並且將變成可運行的notify或allAll消息。在上述所有情況下,線程不執行任何處於阻塞狀態的內容。當int – AKh 2010-12-08 18:38:22
- 1. 當某個線程調用Thread.interrupt()時,會發生什麼?
- 2. 當你運行一個程序時會發生什麼?
- 3. Erlang:當你f()中的一個Pid時會發生什麼?
- 4. 當你調用UItableview的重裝兩次時會發生什麼
- 5. 當一個線程完成其互斥量時,線程會發生什麼?
- 6. 當一個線程被阻塞時,其他線程會發生什麼?
- 7. 當你停止VS調試器時會發生什麼?
- 8. 當你同時觸摸兩個按鈕時會發生什麼
- 9. 當你不加入你的主題時會發生什麼?
- 10. 當你調用Rails中的關係/集合時會發生什麼?
- 11. 你怎麼做到這一點,當你按下一個鍵會發生什麼
- 12. 當SIGCANCEL發送到線程時會發生什麼?
- 13. 中斷HTTP流時會發生什麼?
- 14. 當一個定時器線程進入睡眠狀態時會發生什麼
- 15. 當獲取它的線程退出時,Mutex會發生什麼?
- 16. 當我在一個double中使用goto時會發生什麼?
- 17. 當多個線程調用一個帶有靜態變量的函數時會發生什麼?
- 18. 當我調用DLL中的函數時會發生什麼
- 19. 當你使用unbind()失敗時會發生什麼?
- 20. 當你在瀏覽器中輸入URL時會發生什麼
- 21. 當調用ajax調用時會發生什麼?
- 22. 當內核代碼中斷時會發生什麼?
- 23. 當sqlite3 db寫入被中斷時會發生什麼?
- 24. 當使用new操作符調用堆中的Class()時發生多個調用時會發生什麼?
- 25. 當你等待一個失敗的任務時會發生什麼
- 26. 當你插入一個新的USB設備時會發生什麼?
- 27. 當你聲明一個具有空邊界的數組時會發生什麼
- 28. 當你在你的項目中添加一個dll的引用時,會發生什麼.net
- 29. 發生中斷時,x86架構中會發生什麼?
- 30. 當你增加一個整數超過其最大值時會發生什麼?
Java中的類似故事,除了(1)異常被稱爲`InterruptedException`,以及(2)線程有一個「中斷狀態」,如果線程沒有在等待或休眠。我不確定是否已經設置了中斷狀態的阻塞會導致異常被拋出,但是它不太可能破壞內容。 – cHao 2010-12-06 22:36:14