ExecutorService接口使用submit方法会返回一个Future<V>对象。Future表示异步计算的结果。它提供了检查计算是否完毕的方法,以等待计算的完毕,并获取计算的结果。计算完毕后仅仅能使用get方法来获取结果。如有必要,计算完毕前能够堵塞此方法。取消则由cancel方法来运行。还提供了其它方法,以确定任务是正常完毕还是被取消了。

一旦计算完毕,就不能再取消计算。假设为了可取消性而使用Future但又不提供可用的结果,则能够声明Future<?>形式类型、并返回null作为底层任务的结果。

写个简单样例:

import java.util.concurrent.*;

/**
* To change this template use File | Settings | File Templates.
*
* @author wangqing
* @since 1.0.0
*/
public class TestFuture {
public static void main(String[] args) {
ExecutorService poll = Executors.newFixedThreadPool(100);
Future<Boolean> future = poll.submit(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
Thread.sleep(1000*10);
System.out.println("任务运行完毕");
return true;
}
});
try {
future.get(3,TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace(); //get为一个等待过程。异常中止get会抛出异常
} catch (ExecutionException e) {
e.printStackTrace(); //submit计算出现异常
} catch (TimeoutException e) {
e.printStackTrace(); //超时异常
future.cancel(true); //超时后取消任务
}finally {
poll.shutdown();
}
}
}

最新文章

  1. Guid的使用
  2. 将现有MySQL数据库改为大小写不敏感
  3. CSS 实现背景透明 内容文字不透明 显示
  4. 学习下nginx负载均衡--深入理解nginx
  5. BZOJ2819 Nim(DFS序)
  6. RAID5和RAID10,哪种RAID更适合你(上)
  7. Excel skills (2) -- 自动调整行宽列高
  8. 【nodejs学习】1.文件操作
  9. 【转】d3d的投影矩阵推导
  10. java_eclipse_设置全局编码_utf-8_编译class指定_运行jar乱码解决_不依赖环境
  11. android 界面布局
  12. JavaScript------处理Json数据
  13. iostat 磁盘io分析工具
  14. webstrom的热更新没效果
  15. oracle sql 游标的简单用法(tip:sql中两个单引号表示一个单引号)
  16. nginx——防盗链功能
  17. 转换java keytools的keystore证书到OPENSSL的PEM格式文件
  18. SpringBoot添加对Mybatis分页插件PageHelper的支持
  19. [BZOJ4383][POI2015] Pustynia-[线段树+dp+拓扑排序]
  20. msf提权命令/meterpreter下的几个命令

热门文章

  1. 数论E - Biorhythms(中国剩余定理,一水)
  2. 模板方法在Spring事务中的应用
  3. MYSQL SELECT 过程 转
  4. NUMA架构
  5. 树状数组求第K小值 (spoj227 Ordering the Soldiers &amp;amp;&amp;amp; hdu2852 KiKi&amp;#39;s K-Number)
  6. STL源码剖析——hashtable
  7. 在线分享Oracle尖峰时刻--2014年中秋节尖峰在线福利!
  8. 1 cocos2dx源码分析-程序启动与主循环
  9. Quadro P5200 - 最强大的移动工作站显卡 专门为了惠普 VR Z 背包电脑而发布
  10. java基础知识精华