java runnable 异常_Java实现多线程异常捕获Runnable的案例
这篇文章主要介绍了详解Java中多线程异常捕获Runnable的实现的相关资料,希望通过本文能帮助到大家,让大家理解掌握这样的知识,需要的朋友可以参考下
详解Java中多线程异常捕获Runnable的实现
1、背景:
Java 多线程异常不向主线程抛,自己处理,外部捕获不了异常。所以要实现主线程对子线程异常的捕获。
2、工具:
实现Runnable接口的LayerInitTask类,ThreadException类,线程安全的Vector
3、思路:
向LayerInitTask中传入Vector,记录异常情况,外部遍历,判断,抛出异常。
4、代码:
package step5.exception;
import java.util.Vector;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import com.autonavi.pds.core.incre.impl.LayerInitTask;
public class ThreadException {
public static void main(String[] args) {
try {
Vector errRet = new Vector();
ExecutorService pool = Executors.newFixedThreadPool(6);
for (int i = 0; i 0) {
System.out.println("根据返回值捕获:exception");
throw new RuntimeException( "入库失败!");
}
} catch (Exception e) {
System.out.println("根据抛出异常捕获:exception");
throw new RuntimeException( "入库失败!");
}
System.out.println("-----入库成功,发成功完成工作邮件--------");
}
}
package step5.exception;
import java.util.Vector;
public class LayerInitTask implements Runnable {
private int threadNum;
private Vector errRet;
public LayerInitTask(int num, Vector errRet) {
this.threadNum = num;
this.errRet = errRet;
}
@Override
public void run() {
try {
if (this.threadNum == 3) {
throw new RuntimeException( this.threadNum + ":数据格式有误.");
}
System.out.println(this.threadNum + ":刷表成功");
} catch (Exception e) {
this.errRet.add("线程:" + this.threadNum + "运行异常!");
throw new RuntimeException( this.threadNum + ":刷表失败");
}
}
}
5、结果:
Exception in thread "pool-1-thread-4" java.lang.RuntimeException: 3:刷表失败
at step5.exception.LayerInitTask.run(LayerInitTask.java:23)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "main" java.lang.RuntimeException: 入库失败!
at step5.exception.ThreadException.main(ThreadException.java:27)
2:刷表成功
1:刷表成功
5:刷表成功
0:刷表成功
4:刷表成功
根据返回值捕获:exception
根据抛出异常捕获:exception
java runnable 异常_Java实现多线程异常捕获Runnable的案例相关推荐
- Java中非法参数的异常_Java中的异常
异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常. ...
- java运行时异常与非运行时异常_java 运行时异常与非运行时异常理解
所谓的异常就是阻止当前程序或方法继续执行的问题. java异常分为两种:运行时异常(RuntimeException)和非运行时异常(CheckedException)也叫检查式异常. 1.运行时异常 ...
- java 负数异常_java基础之异常
一.Throw(抛出异常,让调用者处理) Throw(将异常抛给调用者) 在java中,提供了一个throw关键字,它用来抛出一个指定的异常对象.那么,抛出一个异常具体如何操作呢? 1. 创建一个异常 ...
- java的数据异常_java的各种异常
展开全部 Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定义异常 异常类分两大类型:Error类代表 ...
- java常见检查异常_java中常见异常总汇,附解释
Java Exception: 1.Error 2.Runtime Exception 运行时异常 3.Exception 4.throw 用户自定义异常 异常类分两大类型:Error类代表了编译和系 ...
- java trrows处理_java 19 -2 异常以及tr...catch()的方法处理异常
1 /* 2 异常:程序出现了不正常的情况.3 4 举例:今天天气很好,班长出去旅游.骑着自行车,去山里面呼吸新鲜空气.5 Error:6 问题1:山路塌陷了,班长及时停住了,但是过不去了.严重的问题 ...
- java 手动线程调度_Java Thread 多线程 操作线程
5.线程的创建和启动 A.继承Thread类或实现Runnable接口,重写或实现run方法,run方法代表线程要完成的任务 B.创建Thread子类或是Runnable的实现类,即创建的线程对象:不 ...
- classcastexception异常_Java 最全异常讲解
Java知其所以然 导引问题 实际工作中,遇到的情况不可能是非常完美的.比如:你写的某个模块,用户输入不一定符合你的要求.你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数 ...
- java 捕获异常顺序_Java基础:异常捕获顺序
public voidtestException(){ int a[] = {1,2,3};int q = 0; try{ for(int i=0;i }catch(ArithmeticExcepti ...
最新文章
- 连接网络计算机后用户名更改不,电脑修改ip后无法上网
- 脑科学真的可以启发AI吗?
- 如何在自定义数据源组件中限制用户的更改
- 用ajax更新div,如何使用ajax和jquery更新特定的div
- 数据库系列之T-SQL(触发器)
- 《机器学习导论》和《统计机器学习》学习资料:张志华教授
- java中拷贝文件的代码_拷贝文件夹中的所有文件到另外一个文件夹
- 被字句15个_文旅部重新认定国级非遗保护单位,潮州15项花落谁家?这些非遗你都认得吗?...
- 【QT】QT从零入门教程(十六):QSS样式表
- java array使用_Java_ArrayLit详细用法
- Java通过JNI/JNA加载dll库文件调用C接口,出现“java.lang.UnsatisfiedLinkError:包名.类.方法(参数)”问题
- Jmeter录制脚本介绍
- 网课查课插件 支持 60类型+ 彩虹查课插件 网络查课查询
- 2020公务员考试应届毕业生的身份界定
- win10怎么手动修改自己的IP地址
- 麦德龙的商品供应链管理
- 管路流体仿真matlab,MathWorks 在 Simscape 中新增建模和仿真流体系统功能
- 招投标舞弊的22种方式及案例
- HTML+CSS+JS网页设计期末课程大作业(家居网)
- 高学历就意味着高薪资?低学历转行3D建模,游戏建模成为首选
热门文章
- 【Elasticsearch】es Ingest 节点
- 【Elasticsearch】使用 Elasticsearch Freeze index API 创建冻结索引
- 【java】强悍!Java 9 中的9个新特性
- Spark SQL 和 Hive UDF ExceptionInInitializerError getRemoteBlockReaderFromTcp BlockReaderFactory
- 一女程序员被判 9 个月:因薪酬等问题离职,rm -f * 删库,瘫痪 6 个小时
- 多线程环境下,HashMap为什么会出现死循环?
- Swagger天天用,但它背后的实现原理很多人都不知道!
- MySQL关联查询时,我们为什么建议小表驱动大表?
- eclipse目录发布到tomcat对应的目录
- 格式化输出,while循环,运算符,初识编码