码迷,mamicode.com
首页 > 编程语言 > 详细

线程超时

时间:2019-12-18 14:32:27      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:oid   timeout   service   except   exe   cal   inter   imp   超时   

package com.nantian.winUtliTest.ThreadTest;

import java.util.HashMap;
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.TimeUnit;
import java.util.concurrent.TimeoutException;

/**
* 启动一个任务,然后等待任务的计算结果,如果等待时间超出预设定的超时时间,则中止任务。
*
* @author Chen Feng
*/
public class ThreadTest {

public static void main(String[] args) {
// System.out.println("Start ...");
//
// ExecutorService exec = Executors.newCachedThreadPool(); //创建一个线程池
//
// testTask(exec, 15); // 任务成功结束后等待计算结果,不需要等到15秒 ntaskResult : true failReason: null
// testTask(exec, 5); // 只等待5秒,任务还没结束,所以将任务中止 ntaskResult : null failReason : 主线程等待计算结果超时,因此中断任务线程!
//
// exec.shutdown();
// System.out.println("End!");
}

public static HashMap<String, String> testTask(ExecutorService exec, int timeout) {
// MyTask task = new MyTask();
a sA=new a();
Future<HashMap<String, String>> future = exec.submit(sA);

HashMap<String, String> taskResult = null;
String failReason = null;
try {
// 等待计算结果,最长等待timeout秒,timeout秒后中止任务
taskResult = future.get(timeout, TimeUnit.SECONDS);
} catch (InterruptedException e) {
failReason = "主线程在等待计算结果时被中断!";
} catch (ExecutionException e) {
failReason = "主线程等待计算结果,但计算抛出异常!";
} catch (TimeoutException e) {
failReason = "主线程等待计算结果超时,因此中断任务线程!";
exec.shutdownNow();
}

System.out.println("ntaskResult : " + taskResult.get("isSucc"));
System.out.println("failReason : " + failReason);
return taskResult;
}
}

//class MyTask implements Callable<Boolean> {
//
// @Override
// public Boolean call() throws Exception {
// // 总计耗时约10秒
// for (int i = 0; i < 100L; i++) {
// Thread.sleep(100); // 睡眠0.1秒
// System.out.print(‘-‘);
// }
// return Boolean.TRUE;
// }
//}

线程超时

标签:oid   timeout   service   except   exe   cal   inter   imp   超时   

原文地址:https://www.cnblogs.com/wzy-525/p/12059531.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!