怎样给ExecutorService异步计算设置超时
2024-10-02 00:02:40
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();
}
}
}
最新文章
- Guid的使用
- 将现有MySQL数据库改为大小写不敏感
- CSS 实现背景透明 内容文字不透明 显示
- 学习下nginx负载均衡--深入理解nginx
- BZOJ2819 Nim(DFS序)
- RAID5和RAID10,哪种RAID更适合你(上)
- Excel skills (2) -- 自动调整行宽列高
- 【nodejs学习】1.文件操作
- 【转】d3d的投影矩阵推导
- java_eclipse_设置全局编码_utf-8_编译class指定_运行jar乱码解决_不依赖环境
- android 界面布局
- JavaScript------处理Json数据
- iostat 磁盘io分析工具
- webstrom的热更新没效果
- oracle sql 游标的简单用法(tip:sql中两个单引号表示一个单引号)
- nginx——防盗链功能
- 转换java keytools的keystore证书到OPENSSL的PEM格式文件
- SpringBoot添加对Mybatis分页插件PageHelper的支持
- [BZOJ4383][POI2015] Pustynia-[线段树+dp+拓扑排序]
- msf提权命令/meterpreter下的几个命令
热门文章
- 数论E - Biorhythms(中国剩余定理,一水)
- 模板方法在Spring事务中的应用
- MYSQL SELECT 过程 转
- NUMA架构
- 树状数组求第K小值 (spoj227 Ordering the Soldiers &;amp;&;amp; hdu2852 KiKi&;#39;s K-Number)
- STL源码剖析——hashtable
- 在线分享Oracle尖峰时刻--2014年中秋节尖峰在线福利!
- 1 cocos2dx源码分析-程序启动与主循环
- Quadro P5200 - 最强大的移动工作站显卡 专门为了惠普 VR Z 背包电脑而发布
- java基础知识精华