不要吞下中断

有时,抛出InterruptedException并不是一种选择,例如Runnable定义的任务调用可中断方法时。在这种情况下,您不能抛出InterruptedException,但也不想执行任何操作。当阻塞方法检测到中断并引发InterruptedException时,它将清除中断状态。如果捕获了InterruptedException但无法将其抛出,则应保留发生中断的证据,以便调用堆栈中更高级别的代码可以了解该中断并在需要时对其进行响应。可以通过调用interrupt()来“重新中断”当前线程来完成此任务,如清单3所示。至少,每当您捕获InterruptedException并且不抛出该异常时,请在返回之前重新中断当前线程。

public class TaskRunner implements Runnable {

private BlockingQueue queue;

public TaskRunner(BlockingQueue queue) {

this.queue = queue;

}

public void run() {

try {

while (true) {

Task task = queue.take(10, TimeUnit.SECONDS);

task.execute();

}

}

catch (InterruptedException e) {

// Restore the interrupted status

Thread.currentThread().interrupt();

}

}

}

java sleep异常_Java的Thread.sleep何时会引发InterruptedException?相关推荐

  1. linux java url 异常_java异常处理总结

    找到一个关于异常总结的很详细的文章,分享下.异常在我们编程中很重,在适当的位置,合理的处理或者抛出异常,对程序来说至关重要. 转:异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开 ...

  2. java runnable 异常_Java实现多线程异常捕获Runnable的案例

    这篇文章主要介绍了详解Java中多线程异常捕获Runnable的实现的相关资料,希望通过本文能帮助到大家,让大家理解掌握这样的知识,需要的朋友可以参考下 详解Java中多线程异常捕获Runnable的 ...

  3. java 到异常_java编程中遇到的异常以及异常的一些处理

    n 异常的概念 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户? 比如除法运算.读写文件操作,都可能 ...

  4. java 编写异常_Java基础编程之异常处理

    Java异常类是对于程序中可能出现的错误或者异常的一种处理方式.在设计程序的过程中,对于可能出现的异常错误,比如说用户输入错误,设备错误,磁盘满了或者代码错误等等,通常采用异常处理的方式来进行处理可能 ...

  5. java runtime 异常_Java中RuntimeException和Exception

    在java的异常类体系中,Error和RuntimeException是非检查型异常,其他的都是检查型异常. 所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类 不 ...

  6. java 多层异常_Java多层嵌套异常处理的基本流程

    异常是程序中的一些错误,但并不是所有的错误都是异常,错误有时候是可以避免的.异常的对象有两个来源,一是Java运行时环境自动抛出系统生成的异常,而不管你是否愿意捕获和处理,它总要被抛出!比如除数为0的 ...

  7. JAVA语言异常_Java语言中常用异常类EoFException是用来处理( )异常的类_学小易找答案...

    [填空题]Java语言中常用异常类ClassNotFoundException是用来处理 ( )的异常的类 [填空题]Java语言声明 ( ) 类为会产生"严重错误"的类 [简答题 ...

  8. java join 异常_Java:守护进程:thread.join()没有完成,当在一个线程中抛出异常时...

    我写了一个Java守护进程(一个实现守护进程和Runnable的类),现在我遇到了以下问题: 在init()中,我创建了一个新线程 . Thread thread = new Thread(this) ...

  9. java runnable 异常_JAVA 线程中的异常捕获

    在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...

最新文章

  1. SEL|世界土壤日-土壤生态学Nico Eisenhauer 教授讲座
  2. Java 地位不保,落后已成定局 ?| 10月编程语言排行
  3. java的reflection
  4. java getSource()和 getActionCommand()
  5. mac下kafka环境搭建 测试
  6. Asp.Net MVC开源CMS - Orchard
  7. java开发中spring常用的工具类
  8. Linux笔记-centos7源码安装Mysql5.6(图解详细)
  9. 百度研究院|2020年10大人工智能科技趋势
  10. 关于sqoop增量导入oracle的数据到HDFS的出现的错误总结
  11. 关于extern C
  12. 09_MySQL DQL_SQL99标准中的多表查询(外连接)
  13. win 10 系统怎么显示隐藏文件
  14. [RESTful web services读书笔记] 接口设计中维持XML和JSON表述的兼容性
  15. 模拟京东登陆 java_java-爬虫部分:关于京东模拟登陆的两种实现 | 学步园
  16. Loading 加载中 图片素材
  17. 华为交换机配置console口和telnet密码实例
  18. python语言采用________方式运行程序_静态语言采用________方式执行,如C语言;脚本语言采用________方式执行,如Python语言。_学小易找答案...
  19. 《预训练周刊》第53期:代码生成、通用任务变换器
  20. 影视后期行业概述、制作流程、岗位划分、薪资待遇、课程介绍详解

热门文章

  1. mysql 创建全文索引_mysql创建索引
  2. linux la 的使用方法,libtool使用方法
  3. partition by的用法
  4. 安装WIN7 7600英文原版+中文补丁终极解决方案
  5. 【五一创作】使用Resnet残差网络对图像进行分类(猫十二分类,模型定义、训练、保存、预测)(一)
  6. 三星中央系统管理服务器,Bixby
  7. Linux分区和添加磁盘
  8. 编程比赛常用技巧总结
  9. Nginx的基本使用
  10. Flash游戏制作--五子连珠(一)