java – 线程中断:它会取消接收wait()调用吗?
我有一个线程,它有一个传入的作业队列(一个包含作业描述的LinkedList).当没有任务可以工作时,线程在队列中等待().当外部作业调度器对象在队列中放置新作业时,会用notify()唤醒它.
在我的程序关闭时,我在Thread上调用interrupt().当线程等待wait()中的作业时,这会引发InterruptedException.我的问题是:如果我中断线程,而不是阻塞但做某种工作,那么会发生什么,处理的项目是队列中的最后一个(所以队列现在是空的),并且在中断之前执行isInterrupted()检查标志设置好,它再??次调用wait()?它会抛出一个InterruptedException,因为中断的标志已经设置或线程永远等待,因为新的作业永远不会到达队列,没有人打断等待? 解决方法
是的,你中断的线程会在调用wait()时抛出一个InterruptedException异常.这是很简单的测试自己.
public class TestInt { public static void main(String[] args) throws Exception { Thread.currentThread().interrupt(); synchronized(TestInt.class) { TestInt.class.wait(); } } } 还要注意Objectodwait()的javaodc:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |