我一直在一個同步塊內獲取這個異常,在這個異步塊中我調用等待同一個對象同步。首先打斷一個線程是什麼意思?其次,什麼是這種情況發生的正常場景?關於可能發生什麼或我應該做什麼的任何建議?Java InterruptedException - 我很困惑,它甚至意味着線程被中斷或爲什麼它會是什麼
回答
中斷機制用於通知線程它應該儘快終止自己。這允許中斷的線程安全地退出,而不會使任何數據處於不一致的狀態。
有關更多信息,建議閱讀Java Concurrency in Practice,特別是「取消和關閉」一章。 – Moonbeam 2012-03-11 03:17:43
我想指出,中斷並不一定意味着結束處理。它只是設置一個標誌並拋出InterruptedException。中斷的線程如何反應純粹是它的問題。它可以用來轉換處理狀態或作爲重啓動器。它只是告訴線程一些根本性的變化,而且當前的執行狀態可能不再有效或不可取,或者無論如何。 – 2012-03-11 03:35:37
@JakubZaverka,你提出了一些非常好的觀點。 – Moonbeam 2012-03-11 12:54:11
首先打斷一個線程是什麼意思?
這意味着線程對象上有東西叫做Thread.interrupt()
。這會在線程上設置interrupted
標誌,並導致某些方法調用以異常終止。
其次,什麼是這種情況發生的正常場景?
它通常用於第二個線程要告訴該線程停止它正在做的事情。該調用可以是直接的,也可以通過庫方法完成。例如,ThreadPoolExecutor.shutdownNow()
使用中斷來(嘗試)終止正在執行的任務。
請注意,中斷線程並不能保證停止它。事實上,除了拋出異常的情況外,如果線程調用interupted()
或isInterupted()
,線程只會注意到它已被中斷。即使這樣,它也可以簡單地清除旗幟並繼續,好像什麼也沒有發生。
任何有關可能會發生什麼或我應該做什麼的建議?
看看什麼是「控制」被中斷的線程。
- 1. StackOverflowError在Java中意味着什麼?它的修復是什麼?
- 2. 困惑在這種方法的自我意味着什麼
- 3. 這在perl $ variable_one {$ variable_two}中意味着什麼?它叫什麼?
- 4. 困惑於NSCFTimer ...它是什麼?
- 5. MVC甚至在IOS的背景下意味着什麼?
- 6. 這個錯誤日誌甚至意味着什麼?
- 7. 這是什麼logcat線意味着
- 8. 〜=是什麼。在Stata意味着什麼?
- 9. %是什麼〜DP0意味着
- 10. 這是&意味着什麼?
- 11. Java中的int.class包含了什麼?爲什麼它甚至是有效的?
- 12. 這個不正確(但有效)的SQL連接甚至意味着什麼?它究竟在做什麼?
- 13. xcode printf 0x0000000000000000,這是什麼意思?它意味着空?
- 14. 什麼是鎖的ID在Java線程轉儲意味着
- 15. /(斜線)在CSS中意味着什麼?
- 16. 什麼是java中的一元代碼意味着什麼
- 17. 什麼是 '自我.__類__.__ missing__' 意味着
- 18. 在C#中這意味着什麼?我如何使用它?
- 19. WCF斷開通訊意味着什麼?
- 20. 什麼是「|」意味着在C#編程?
- 21. 什麼是-XX,-X和-d在java中?什麼是-XX:+是什麼意思?什麼-XX: - 意味着什麼?
- 22. 什麼%*%意味着R中
- 23. 「this」在java中的多線程中意味着什麼?
- 24. 會話在Python中意味着什麼?
- 25. 結腸在Java中意味着什麼?
- 26. '...'在java中意味着什麼?
- 27. 「SomeClass.this」在java中意味着什麼?
- 28. tmp_xxx在java中意味着什麼?
- 29. @符號在java中意味着什麼?
- 30. 「| =」在Java中意味着什麼?
你可以發表一些代碼,所以我們可以看到問題的背景? – ose 2012-03-11 03:06:56