标签:multithreading concurrency blockingqueue java
这个问题已经在这里有了答案: > Handling InterruptedException in Java 7个
我在Runnable的run()方法内部有与此类似的代码,并且启动了该Runnable的多个实例,
do{
try{
String contractNum=contractNums.take();
}catch(InterruptedException e){
logger.error(e.getMessage(), e);
}
}while(!("*".equals(contractNum)));
其中contractNums是BlockingQueue< String>.由多个线程共享.有单独的Runnable将元素放入此队列.
我不确定捕获InterruptedException之后的下一步,我应该通过重新抛出RuntimeException终止该线程(这样我的while循环终止)还是尝试再次从contractNum队列中获取下一个元素并忽略InterruptedException?
我不确定是否将InterruptedException视为终止线程或将其保留在while循环中的致命条件.
请提出建议.
解决方法:
这取决于.是否有您故意中断线程的地方(例如,告诉它完成操作(例如,在关闭过程中))?如果没有,您只需要处理可能会唤醒线程的虚假中断即可.如果您不希望处理受到影响,请忽略它们.它们绝对不是致命的异常,并且您无需记录它们(尤其是作为错误).
标签:multithreading,concurrency,blockingqueue,java 来源: https://codeday.me/bug/20191027/1942322.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。