1
A
回答
2
通常像睡覺的方法拋出InterruptedException
。
如果一個線程很長一段時間沒有調用引發方法InterruptedException
?然後它必須定期調用Thread.interrupted,如果接收到中斷,則返回true。例如:
for (int i = 0; i < inputs.length; i++) {
heavyCrunch(inputs[i]);
if (Thread.interrupted()) {
// We've been interrupted: no more crunching.
return;
}
}
在這個簡單的例子中,代碼只是簡單地測試中斷並在線程已經收到時退出線程。在更復雜的應用程序,它可能會更有意義拋出一個InterruptedException:
if (Thread.interrupted()) {
throw new InterruptedException();
}
現在回答你的問題:
- 從上面的例子可以看到,您可以通過處理InterruptedException的你如果它不是由方法處理,則爲自己
- 正如您可以爲這些方法處理此問題,您可以執行其他任務而不是退出。但是在發生中斷後退出線程肯定是最常見的。
來源:javadoc
1
當出現問題(即使存在其他情況)時會發生中斷,程序將切換到中斷服務程序。它可能會處理那裏的問題並繼續執行,或者如果無法解決則終止。在Java中,即使是「異常」(中斷),我們通常會編寫這樣的例程(這可能會導致中斷),並捕獲(例外)我們捕獲並處理它的地方。如果問題無法解決,我們終止它。
0
當您將中斷它設置一個標誌,它是比這更復雜,但是這是基本的行爲。你編程點檢測中斷通過使用一個
if(Thread.currentThread.isInterrupted())
或使用基本上這樣做的函數。你不應該認爲有什麼神奇的事情發生。在一天結束時,所有事情都是使用代碼實現的。
相關問題
- 1. 在關機鉤中斷Java中的所有線程
- 2. 中斷在Java中
- 3. 有關枚舉在Java中
- 4. 沒有關閉()方法的Java中斷輸入流
- 5. 如何在Java中中斷
- 6. 使用斷言在Java中
- 7. 截斷在Java
- 8. 斷言在Java
- 9. 有關中斷和中斷處理的問題
- 10. 開關/案件沒有中斷DllMain
- 11. java斷言關鍵字問題
- 12. 在java中與dll的用法有關
- 13. 有關在java包中的問題
- 14. 有關在java中的GUI的問題
- 15. 有關ADT樹的問題在Java中
- 16. java httpurlconnection中斷html
- 17. Java ExecutorService invokeAll()中斷
- 18. Java - 中斷線程?
- 19. 開關在Java中
- 20. 控制菜單在Java中沒有案例/中斷
- 21. Java在Linux中運行時沒有中斷一段時間
- 22. 在Java中中斷循環線程
- 23. 有關使用斷言刪除生產中的Java代碼段的建議
- 24. java中的線程中斷
- 25. Java中的線程中斷
- 26. 中斷Java中的線程
- 27. 中斷java中的線程
- 28. 在VS.Net 2005中進行調試時沒有關聯斷點
- 29. EF - 只有在被斷點擊中時纔會消除關係
- 30. 如何在css中關閉斷詞?
Tnx回覆,檢查我的問題更新。你是否同意這只是一個Thread.yield()調用? – Rollerball
我認爲你可以在中斷調用時使用yield – stinepike