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. Go语言库之strconv包(转载自--http://blog.csdn.net/alvine008/article/details/51283189)

    golang strconv.ParseInt 是将字符串转换为数字的函数 func ParseInt(s string, base int, bitSize int) (i int64, err e ...

  2. day2——两数相加

    // 小白一名,0算法基础,艰难尝试算法题中,若您发现本文中错误, 或有其他见解,往不吝赐教,感激不尽,拜谢. 领扣 第2题 今日算法题干//给定两个非空链表来表示两个非负整数.位数按照逆序方式存储, ...

  3. java 枚举使用教程

    转载:https://blog.csdn.net/newbie_907486852/article/details/81027512 一.枚举型常量 首先枚举是一个特殊的class,这个class相当 ...

  4. Windows 下 docker 部署 gitlab ci

    一.安装 1. 安装 docker Docker下载 注意:Windows 10 家庭版获取 之前的版本不能直接安装 Docker ,而是需要去安装 Docker Toolbox 我这里安装的是 Do ...

  5. HBase Block Cache(块缓存)

    Block Cache HBase提供了两种不同的BlockCache实现,用于缓存从HDFS读出的数据.这两种分别为: 默认的,存在于堆内存的(on-heap)LruBlockCache 存在堆外内 ...

  6. 关于spark中DatatFrame函数操作中isin方法的使用

    需求: 1.需要从一张mysql数据表中获取并筛选数据 2.通过spark将该表读进来,形成一个df:DataFrame,有一个集合 val list = List[String]("小李& ...

  7. Eclipse中设置作者日期等Java注释模板

    Eclipse作为JavaIDE(Integrated Development Environment,集成开发环境),可以通过设置自动添加Javadoc注释信息,如@author 作者名.@vers ...

  8. 杂记:Django和static,Nginx配置路径,json_schema

    前记:知识无处不在,要懂得珍惜,找到适合自己的方法高效地学习有价值的知识,不念过去,不畏将来. Django对待静态资源,在非前后端分离时的常识 Django会对项目app下的static文件夹的静态 ...

  9. SWUST OJ(1028)

    特定字符序列的判断 #include <iostream> #include <cstdlib> #include <stack> #include <str ...

  10. 举例说明$POST 、$HTTP_RAW_POST_DATA、php://input三者之间的区别

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...