当队列中没有任何内容和调用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