Atitit 流水线子线程异常处理 1.1. 大概原理是 FutureTask排除异常 FutureTask.get can throw ExecutionException,can catc
Atitit 流水线子线程异常处理
1.1. 大概原理是 FutureTask排除异常 FutureTask.get can throw ExecutionException,can catch this ex... 1
1.2. code 1
1.1. 大概原理是 FutureTaskt throw 异常 FutureTask.get can throw ExecutionException,can catch this ex...
Throwable cause = e.getCause();
if(cause.getMessage().contains("sub task err"))
{
RunEx re=(RunEx) cause;
System.out.println(JSON.toJSONString( re.returnObj));
System.out.println();
}else
ExUtil.throwExV2(e);
1.2. code
package com.cnhis.cloudhealth.clinical.clidoctor.clisendadvice.bo;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import com.alibaba.fastjson.JSON;
import com.cnhis.cloudhealth.commons.util.oplogutil.AsynUtil;
import com.cnhis.cloudhealth.util.ExUtil;
import com.cnhis.cloudhealth.util.RunEx;
import com.google.common.collect.Maps;
public class FuturetaskExTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
FutureTask tsk= subtask();
System.out.println("--");
try {
tsk.get();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
Throwable cause = e.getCause();
if(cause.getMessage().contains("sub task err"))
{
RunEx re=(RunEx) cause;
System.out.println(JSON.toJSONString( re.returnObj));
System.out.println();
}else
ExUtil.throwExV2(e);
}
//System.out.println("--");
}
public static FutureTask subtask() {
FutureTask<Object> FutureTask_updateCviBdj=newFutureTask(newCallable<Object>() {
@Override
publicObject call() {
System.out.println("--e in sub thread");
if("a".equals("a"))
{
Mapm=Maps.newConcurrentMap();m.put("k", "vv");
thrownewRunEx("sub task err",m);
}
return"err";
}
}) ;
AsynUtil.execMeth_Ays( FutureTask_updateCviBdj,"");
return FutureTask_updateCviBdj;
}
}
Atitit 流水线子线程异常处理 1.1. 大概原理是 FutureTask排除异常 FutureTask.get can throw ExecutionException,can catc相关推荐
- java 异常处理线程_转:Java子线程中的异常处理(通用)
在普通的单线程程序中,捕获异常只需要通过try ... catch ... finally ...代码块就可以了.那么,在并发情况下,比如在父线程中启动了子线程,如何正确捕获子线程中的异常,从而进行相 ...
- java 线程 try catch_Java子线程中的异常处理(通用)
在普通的单线程程序中,捕获异常只需要通过try ... catch ... finally ...代码块就可以了.那么,在并发情况下,比如在父线程中启动了子线程,如何正确捕获子线程中的异常,从而进行相 ...
- 【转】Android子线程真的不能更新UI么
Android单线程模型是这样描述的: Android UI操作并不是线程安全的,并且这些操作必须在UI线程执行 如果在其它线程访问UI线程,Android提供了以下的方式: Activity.run ...
- Android子线程真的不能更新UI么
Android单线程模型是这样描述的: Android UI操作并不是线程安全的,并且这些操作必须在UI线程执行 如果在其它线程访问UI线程,Android提供了以下的方式: Activity.run ...
- Java子线程中的异常处理(通用)
Java子线程中的异常处理(通用) 参考文章: (1)Java子线程中的异常处理(通用) (2)https://www.cnblogs.com/toplist/p/7594557.html 备忘一下.
- Java子线程异常及异常处理
最近使用线程池时,了解到了在子线程中抛出异常,主线程的处理方式. Java中抛出 Exception 时必须使用 try..catch 块处理,但是抛出 RuntimeException 和 Erro ...
- python线程的注意点(线程之间执行是无序的、主线程会等待所有的子线程执行结束再结束(守护主线程)、线程之间共享全局变量、线程之间共享全局变量数据出现错误问题(线程等待(join)、互斥锁))
1. 线程的注意点介绍 线程之间执行是无序的 主线程会等待所有的子线程执行结束再结束 线程之间共享全局变量 线程之间共享全局变量数据出现错误问题 2. 线程之间执行是无序的 import thread ...
- 主线程和子线程的同步控制
一个线程的结束有两种途径,一种是象我们以下的样例一样.函数结束了.调用它的线程也就结束了.还有一种方式是通过函数pthread_exit来实现.另外须要说明的是,一个线程不能被多个线程等待,也就是说对 ...
- main线程 子线程 顺序_面试官:线程池如何按照core、max、queue的执行顺序去执行?详解...
前言 这是一个真实的面试题. 前几天一个朋友在群里分享了他刚刚面试候选者时问的问题:"线程池如何按照core.max.queue的执行循序去执行?". 我们都知道线程池中代码执行顺 ...
- android 关于关于子线程更新UI的一些事
我们在看一些书或者博客时总是会看到一句话"android更新UI操作都是在Main主线程中,子线程中不能进行UI更新操作"那么,在子线程中真的不能进行UI的更新操作吗? //源码环 ...
最新文章
- 发展第三代AI:清华AI研究院基础理论研究中心成立,朱军任主任
- 5大食物千万别挑太艳的
- APP-V与RemotoAPP
- 计算机管理磁盘管理,如何打开磁盘管理?
- Android-使用AIDL进程间通信
- 程序员面试100题之二:跳台阶问题(变态跳台阶)
- ZooKeeper安装过程
- 计算广告学学习2 - 广告有效性模型
- 有赞美业微前端的落地总结
- java webmethod 参数_java详解Spring接收web请求参数的方式
- docker -v -it -p 详细说明
- java 动态给属性赋值_java中为实体对象的动态属性赋值
- 靠播放业务吃不饱?音乐流媒体纷纷“加电商”卖周边
- 关于python的文章_关于python的一篇介绍文章
- java程序加密_对Java代码加密的两种方式,防止反编译
- NAOqi.Net(C#)MotionProxy类的一些函数用法(一)
- 猫是如何躲开影子的?
- python unpacking_Python解包(Unpacking)
- Linux 内核clk 硬件相关层
- Android音视频开发入门(5)使用LAME编码一个PCM文件,为了跳槽强刷1000道Android真题