Java中的超时机制 - 执行一段有时间限制的任务
来源:互联网 发布:grid report vb例子 编辑:程序博客网 时间:2024/04/30 18:46
1. 场景描述
举个例子,有时候执行一段程序需要1 ~ 10分钟才能运行完,但你最多只能等5分钟。如果5分钟以内程序能够运行完,那么直接返回正确结果;如果过了5分钟程序还没运行完,那么就中止程序的运行,直接返回一个错误结果。
2. 一个工具类(用来执行有时间限制的任务)
3. 测试
举个例子,有时候执行一段程序需要1 ~ 10分钟才能运行完,但你最多只能等5分钟。如果5分钟以内程序能够运行完,那么直接返回正确结果;如果过了5分钟程序还没运行完,那么就中止程序的运行,直接返回一个错误结果。
2. 一个工具类(用来执行有时间限制的任务)
package org.demo.task;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;import java.util.concurrent.TimeUnit;public class TimeoutTaskUtils { /** * 执行一个有时间限制的任务 * @param task 待执行的任务 * @param seconds 超时时间(单位: 秒) * @return */public static Boolean execute(Callable<Boolean> task, int seconds){Boolean result = Boolean.FALSE;ExecutorService threadPool = Executors.newCachedThreadPool();try {Future<Boolean> future = threadPool.submit(task);result = future.get(seconds, TimeUnit.SECONDS);}catch (Exception e){result = Boolean.FALSE;e.printStackTrace();}finally{threadPool.shutdownNow();}return result;}}
3. 测试
package org.demo.task;import java.util.concurrent.Callable;public class Main {/** * @param args */public static void main(String[] args) {boolean result = TimeoutTaskUtils.execute(new MyTimeoutTask(), 5);System.out.println("result = " + result);System.out.println("-- finished. --");}}class MyTimeoutTask implements Callable<Boolean> {@Overridepublic Boolean call() throws Exception {for (int i=0; i<10; i++) { System.out.println("i = " + i);Thread.sleep(1000);}return true;}}
- Java中的超时机制 - 执行一段有时间限制的任务
- java设置一段代码执行超时时间
- java设置一段代码执行超时时间
- java设置一段代码执行超时时间
- java设置一段代码执行超时时间
- java设置一段代码执行超时时间
- java设置一段代码执行的超时时间的简单方法
- java设置一段代码执行的超时时间的简单方法 间接实现获取Connection超时问题
- java设置一段代码执行的超时时间的简单方法 间接实现获取Connection超时问题
- java计算一段代码执行的时间
- java 超时任务---设定任务执行时长,超时停止
- java中计算一段代码执行的时间
- Java任务超时处理机制实现
- file_get_contents 增加超时的时间限制
- file_get_contents 增加超时的时间限制
- file_get_contents 增加超时的时间限制
- file_get_contents 增加超时的时间限制
- file_get_contents 增加超时的时间限制
- mssql2000sp4 sql injection
- 同步传输/异步传输
- 2013-08-01(周四)
- C++数据结构--二叉树的复制和删除
- Cocos2d-x引擎学习笔记之(一)Win32下开发环境的搭建
- Java中的超时机制 - 执行一段有时间限制的任务
- 每天多一点儿
- 关于Midi的疑问
- 12 个强大的 Chrome 插件扩展
- 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!
- 在js中如何实现方法重载?以及函数的参数问题
- PMBOK第五版重大变化:九大领域分解为十大领域
- NIO的简单应用
- 解决doubleselect的doubleheadervalue不起作用