控制Java线程超时后中止的方案_第1页
控制Java线程超时后中止的方案_第2页
控制Java线程超时后中止的方案_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、控制Java线程超时后中止的方案这里使用JDK5+的java.util.concurrent包下的API实现,采用这种方式是相对比较安全的。下面我们来看看控制Java线程超时后中止的方案。这里使用JDK5+的java.util.concurrent包下的API实现,采用这种方式是相对比较安全的。实现效果:启动一个任务,然后等待任务的计算结果同时设定一个超时时间,如果等待时间超出预设定的超时时间,则中止任务。代码实现:1. import java.util.concurrent.Callable;    2. import java.util.c

2、oncurrent.ExecutionException;    3. import java.util.concurrent.ExecutorService;    4. import java.util.concurrent.Executors;    5. import java.util.concurrent.Future;    6. import java.util.concurrent.TimeUnit; 

3、60;  7. import java.util.concurrent.TimeoutException;    8.     9. /*   10.  * 启动一个任务,然后等待任务的计算结果,如果等待时间超出预设定的超时时间,则中止任务。   11.  *    12.  * author Chen Feng   13.  */ &#

4、160;  14. public class TaskTimeoutDemo     15.     16.     public static void main(String args)     17.         System.out.println("Start .&

5、quot;);    18.     19.         ExecutorService exec = Executors.newCachedThreadPool();    20.             21.       

6、;  testTask(exec, 15); / 任务成功结束后等待计算结果,不需要等到15秒    22.         testTask(exec, 5); / 只等待5秒,任务还没结束,所以将任务中止    23.     24.         exec.sh

7、utdown();    25.         System.out.println("End!");    26.         27.     28.     public static void testTask(ExecutorService ex

8、ec, int timeout)     29.         MyTask task = new MyTask();    30.         Future<Boolean> future = exec.submit(task);   &#

9、160;31.         Boolean taskResult = null;    32.         String failReason = null;    33.         try   

10、  34.             / 等待计算结果,最长等待timeout秒,timeout秒后中止任务    35.             taskResult = future.get(timeout, TimeUnit.SECONDS);   

11、60;36.          catch (InterruptedException e)     37.             failReason = "主线程在等待计算结果时被中断!"    38.     &

12、#160;    catch (ExecutionException e)     39.             failReason = "主线程等待计算结果,但计算抛出异常!"    40.          ca

13、tch (TimeoutException e)     41.             failReason = "主线程等待计算结果超时,因此中断任务线程!"    42.             exec.shutdownN

14、ow();    43.             44.     45.         System.out.println("ntaskResult : " + taskResult);    46.     

15、60;  System.out.println("failReason : " + failReason);    47.         48.     49.     50. class MyTask implements Callable<Boolean>     51.

16、     52.     Override    53.     public Boolean call() throws Exception     54.         / 总计耗时约10秒    55.     

17、    for (int i = 0; i < 100L; i+)     56.             Thread.sleep(100); / 睡眠0.1秒    57.        &

18、#160;    System.out.print('-');    58.             59.         return Boolean.TRUE;    60.         61.     运行结果:1. Start .    2. -&#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论