收藏 分销(赏)

控制Java线程超时后中止的解决方案.doc

上传人:丰**** 文档编号:11398134 上传时间:2025-07-21 格式:DOC 页数:6 大小:24KB 下载积分:6 金币
下载 相关 举报
控制Java线程超时后中止的解决方案.doc_第1页
第1页 / 共6页
控制Java线程超时后中止的解决方案.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
控制Java线程超时后中止的解决方案 6 2020年4月19日 文档仅供参考,不当之处,请联系改正。 这里使用JDK5+的java.util.concurrent包下的API实现,采用这种方式是相对比较安全的。   实现效果:   启动一个任务,然后等待任务的计算结果同时设定一个超时时间,如果等待时间超出预设定的超时时间,则中止任务。   代码实现:   Java代码:   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;   /**   * 启动一个任务,然后等待任务的计算结果,如果等待时间超出预设定的超时时间,则中止任务。 天骄无双:.com   *   * @author Chen Feng   */   public class TaskTimeoutDemo {   public static void main(String[] args) {   System.out.println("Start ...");   ExecutorService exec = Executors.newCachedThreadPool();   testTask(exec, 15); // 任务成功结束后等待计算结果,不需要等到15秒   testTask(exec, 5); // 只等待5秒,任务还没结束,因此将任务中止   exec.shutdown();   System.out.println("End!");   }   public static void testTask(ExecutorService exec, int timeout) {   MyTask task = new MyTask();   Future<Boolean> future = exec.submit(task);   Boolean 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);   System.out.println("failReason : " + failReason);   }   }   class MyTask implements Callable<Boolean> {   @Override   public Boolean call() throws Exception {   // 总计耗时约10秒 帝尊:.org   for (int i = 0; i < 100L; i++) {   Thread.sleep(100); // 睡眠0.1秒   System.out.print('-');   }   return Boolean.TRUE;   }   }   运行结果:   Java代码:   Start ...   ----------------------------------------------------------------------------------------------------   taskResult : true   failReason : null   ---------------------------------------------   taskResult : null   failReason : 主线程等待计算结果超时,因此中断任务线程!   End!
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服