public class ThreadPoolTest {
@Test
public void testException(){
try{
testExecutorServiceException();
}catch(Exception e){
//e.printStackTrace();
System.out.println("fa");
} }
public void testExecutorServiceException() throws Exception{
Boolean flag = true;
//线程池,一个线程,线程池内部的任务是异步串行执行
ExecutorService executorService = Executors.newSingleThreadExecutor();
//results中存放任务执行的结果
List<Future<Boolean>> results = new ArrayList<Future<Boolean>>(10);
try{
for(int i=0; i<10; i++){
Future<Boolean> future = executorService.submit(new ActSKUCacheCallable(i, flag));
/* if(false == future.get()){
//throw new Exception("4324");
//return;
}*/
//收集任务执行的结果,存储在results中
results.add(future);
}
//主线程中执行,所以flag的值不一定是异步任务处理后的结果
System.out.println("结果:" + flag);
for(int i=0; i<10; i++){
boolean flag1 = results.get(i).get();
System.out.println("执行结果:" + flag1);
} }catch(Exception e){
//e.printStackTrace();
throw e;
}
} private class ActSKUCacheCallable implements Callable<Boolean> {
int i;
Boolean flag;
ActSKUCacheCallable(int i, Boolean flag){
this.i = i;
this.flag = flag;
}
public Boolean call() throws Exception {
try {
if(i % 2 != 0){
throw new Exception("try");
}
System.out.println("正常执行");
} catch (Exception e) {
System.out.println("catch");
//flag = false;
//抛出异常不影响线程池中其他任务的执行
throw e;
//return Boolean.FALSE;
} finally {
System.out.println("finally 代码块" + flag);
} System.out.println("try代码块外面");
return Boolean.TRUE;
}
}
}

执行结果:

Callable抛出异常与future.get的更多相关文章

  1. Callable接口和Future

    本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果.        Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结 ...

  2. 并发编程之Callable异步,Future模式

    Callable 在Java中,创建线程一般有两种方式,一种是继承Thread类,一种是实现Runnable接口.然而,这两种方式的缺点是在线程任务执行结束后,无法获取执行结果.我们一般只能采用共享变 ...

  3. Java Callable接口与Future接口的两种使用方式

    Java Callable.Future的两种使用方式Callable+Futurepublic class Test { public static void main(String[] args) ...

  4. 使用executor、callable以及一个Future 计算欧拉数e

    package test; import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMo ...

  5. Callable接口、Runable接口、Future接口

    1. Callable与Runable区别 Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序,并在设计中引入异步处理.Thread类.Runnable接口和Java内存管理模型使得多线 ...

  6. java核心知识点学习----创建线程的第三种方式Callable和Future CompletionService

    前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...

  7. Callable与Future、FutureTask的学习 & ExecutorServer 与 CompletionService 学习 & Java异常处理-重要

    Callable是Java里面与Runnable经常放在一起说的接口. Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务 ...

  8. Android(java)学习笔记66:实现Runnable接口创建线程 和 使用Callable和Future创建线程

    1. 前面说的线程的实现是新写一个子类继承Thread: 是将类声明为 Thread 的子类.该子类应重写 Thread 类的 run 方法.接下来可以分配并启动该子类的实例 2. 这里说的方案2是指 ...

  9. Callable与Future的简单介绍

    Callable与Future的介绍 Callable与 Future 两功能是Java在后续版本中为了适应多并法才加入的,Callable是类似于Runnable的接口,实现Callable接口的类 ...

随机推荐

  1. Pandas 基础(15) - date_range 和 asfreq

    这一节是承接上一节的内容, 依然是基于时间的数据分析, 接下来带大家理解关于 date_range 的相关用法. 首先, 引入数据文件: import pandas as pd df = pd.rea ...

  2. CSS之不常用但重要的样式总结

    1,设置颜色渐变 background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.67), rgba(255, 255, 255, 0));( ...

  3. loadrunner场景之集合点设置技巧

    在loadrunner的虚拟用户中,术语concurrent(并发)和simultaneous(同时)存在一些区别,concurrent 是指虚拟场景中参于运行的虚拟用户. 而simultaneous ...

  4. [CQOI2014]数三角形

    [CQOI2014]数三角形 给定\(n\times m\)的网格,求三个点在其格点上的三角形个数,1<=m,n<=1000. 解 法一:直接 显然为组合计数问题,关键在于划分问题,注意到 ...

  5. Creed_颓知乎

    题目背景 二轮省选前的一个最后周,Creed_还在颓知乎. 突然,她看到一个有趣的回答. 紧接着,Creed_点开了评论区,又看到了一个有趣的评论. Creed_想了一下,发现自己并不会,于是她又顺着 ...

  6. 【图论】最短路问题之spfa

    写在算法前面: 前向星存图(一个神奇的超越邻接矩阵的存在) 首先讲一下需要定义的一些东西?? 1.head数组:head[点数]:head[i]表示以当前点i为起点的最后一条边(这里的最后指的是编号[ ...

  7. IDEA外部工具配置-OpenJML篇

    帮助文档 jetbrains帮助文档:https://www.jetbrains.com/help/idea/settings-tools-external-tools.html 使用external ...

  8. spring RedisTemplate的使用(一)--xml配置或JavaConfig配置

    1.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="h ...

  9. spark 2.4 java8 hello world

    download JDK 8, extract and add to .bashrc: export JAVA_HOME=/home/bonelee/jdk1.8.0_211export CLASSP ...

  10. srping的历史与哲学

    历史: 要谈Spring的历史,就要先谈J2EE.J2EE应用程序的广泛实现是在1999年和2000年开始的,它的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是在实践中并没有获得绝对的成功, ...