【发布时间】:2016-07-28 03:35:42
【问题描述】:
我有一个与此类似的代码,它位于 Runnable 的 run() 方法中,并启动了该 Runnable 的多个实例,
do{
try{
String contractNum=contractNums.take();
}catch(InterruptedException e){
logger.error(e.getMessage(), e);
}
}while(!("*".equals(contractNum)));
其中contractNums 是由多个线程共享的BlockingQueue<String>。有单独的Runnables 将元素放入此队列。
我不确定捕获InterruptedException 后的下一步,我应该通过重新抛出RuntimeException 来终止这个线程(所以我的while 循环终止)还是尝试再次从contractNum queue 中获取下一个元素并忽略InterruptedException?
我不确定InterruptedException 是否被视为线程终止或将其保持在while 循环中的致命条件。
请提出建议。
【问题讨论】:
标签: java multithreading concurrency blockingqueue