Concurrent----任务超时
来源:互联网 发布:淘宝助手运费模板 编辑:程序博客网 时间:2024/06/05 07:27
配合RPC的时候这个超时判断是很有用的..
package com.wenniuwuren.concurrent;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;import java.util.concurrent.FutureTask;import java.util.concurrent.TimeUnit;import java.util.concurrent.TimeoutException; /** * 启动任务,然后等待任务的计算结果,如果等待时间超出预设定的超时时间,则终止任务。 * * @author zhu.yb */public class JobTimeoutDemo { public static void main(String[] args) { System.out.println("Start..."); ExecutorService exec = Executors.newCachedThreadPool(); testTask(exec, 11); // 在11秒内任务成功结束后计算结果,超过11秒终止 testTask(exec, 5); // 等待5秒,任务还没结束,所以将任务中止 exec.shutdown(); System.out.println("End..."); } public static void testTask(ExecutorService exec, int timeout) { FutureTask<Boolean> future = null; Boolean isTimeout = null; String failReason = "任务执行成功"; // 执行任务 future = new FutureTask<Boolean>(new Callable<Boolean>() { // 执行任务 public Boolean call() throws Exception { // 总计耗时约10秒 for (int i = 0; i < 100; i++) { Thread.sleep(100); System.out.print('-'); } return Boolean.TRUE; } }); exec.submit(future); try { // 等待计算结果,最长等待timeout秒,timeout秒后终止任务 isTimeout = future.get(timeout, TimeUnit.SECONDS); } catch (InterruptedException e) { failReason = "when a thread is waiting, sleeping, or otherwise occupied, " + "and the thread is interrupted, either before or during the activity"; } catch (ExecutionException e) { failReason = " attempting to retrieve the result of a task that aborted"; } catch (TimeoutException e) { failReason = "a blocking operation times out"; // 会等待之前提交的任务完成,关闭线程 exec.shutdown(); // 测试先放这里, 实际环境一般都是在finally里面执行 } finally { } System.out.println("\nisTimeout : " + isTimeout); System.out.println("failReason : " + failReason); }}
执行结果:
0 0
- Concurrent----任务超时
- netty超时任务优化
- Java任务超时处理
- java 超时任务---设定任务执行时长,超时停止
- 超时任务总结(tradingTask)
- 工作流任务的超时计算
- scheduleAtFixedRate定时任务超时问题
- 线程任务超时结束方法
- hadoop 任务超时自动结束任务
- concurrent
- concurrent
- concurrent
- concurrent
- 多任务处理:阻塞和超时
- java多线程实现任务超时监听
- [Jenkins]如何自动停止超时任务?
- Android 中对任务设置超时
- Soket服务端多任务与阻塞超时
- Android应用程序签名过程分析
- java 多态(动态绑定)
- 第十五周 两数和与差
- MyEclipse快捷键大全
- Safari调试模拟器里边的phoneGap应用
- Concurrent----任务超时
- Linux下C++ gsoap服务器的搭建
- 关于中断处理程序中的关中断函数disable_irq和disable_irq_nosync
- 总结之:CentOS 6.4系统裁减详解及装载网卡步骤
- 黑马程序员之ios学习总结——07 C语言的枚举、预处理指令
- CXF WebService 8 - 在cxf中使用配置避免增加字段导致客户端必须更新、同步实体属性的问题
- HDOJ Text Reverse 1062
- 关于L-K跟踪算法的理解
- Thinkphp框架拓展包使用方式详细介绍--验证码实例(十一)