當隊列中沒有任何內容和調用take()時會發生什麼。 API表示該方法將等待,但這是否意味着CPU將在空閒/非空空閒時檢查空隊列,或者是否意味着該線程產生並將被中斷喚醒?如果是前者的情況,我可能想要查看隊列是否爲空,以及是否調用thread.yield()來放棄處理器時間。我的問題是我真的需要調用yield還是爲內部機制處理這個問題?java&線程:中斷的異常和如何正確使用BlockingQueue的take()方法
其次,什麼是中斷例外意味着什麼?如果我理解正確,這意味着如果線程A正在執行此方法並且正在等待輸入,並且另一個線程B調用了threadA.interrupt(),則線程A將捕獲中斷的異常,並且可能暫停執行,如果它很好的話。這是正確的思考方式嗎?
文章上InterruptedException的:戈茨:http://www.ibm.com/developerworks/java/library/j-jtp05236 .html Kabutz:http://www.javaspecialists.co。za/archive/Issue056.html – McDowell 2009-07-14 08:32:12
我建議提交2個問題而不是2個問題。否則,它使投票體面的答案更復雜一點 – 2009-07-14 16:57:46