【发布时间】:2010-11-10 13:50:02
【问题描述】:
当队列中没有任何内容并且调用了 take() 时,究竟会发生什么。 API 说该方法将等待,但这是否意味着 CPU 会旋转检查是否为空/非空,直到有项目在队列中,或者是否意味着线程产生并会被中断唤醒?如果是前者,我可能想看看队列是否为空,以及是否调用 thread.yield() 以放弃处理器时间。我的问题是我真的需要调用 yield 还是有一些内部机制为我处理?
其次,被中断的异常是什么意思?如果我理解正确,这意味着如果线程 A 正在执行此方法并且正在等待输入并且另一个线程 B 调用 threadA.interrupt() 那么线程 A 将捕获中断的异常并可能暂停执行,如果它很好的话。这是正确的思考方式吗?
【问题讨论】:
-
关于 InterruptedException 的文章:Goetz:ibm.com/developerworks/java/library/j-jtp05236.html Kabutz:javaspecialists.co.za/archive/Issue056.html
-
我建议提交 2 个问题,而不是 1 个包含 2 个部分的问题。否则,它会使投票给体面的答案变得更加复杂
标签: java multithreading interrupted-exception