java如何为任意一段代码设置超时时间呢?

java-教程王 Java经验 发布时间:2022-04-03 16:31:03 阅读数:7774 1
下文笔者讲述为任意一段代码,设置超时时间,如下所示:
实现思路:
    使用ExecutorService即可实现超时的设置
例:
package com.java265.other;
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;
import java.util.concurrent.TimeoutException;

public class Test13 {
	/**
	 * java265.com 示例程序
	 */
	public static void main(String[] args) {
	        final ExecutorService exec = Executors.newFixedThreadPool(1);  
	        Callable<String> call = new Callable<String>() {  
	            public String call() throws Exception {  
	                //开始执行耗时操作  
					// 业务代码
	                Thread.sleep(1000 * 5);  
	                return "线程执行完成.";  
	            }  
	        };  
	          
	        try {  
	            Future<String> future = exec.submit(call);  
	            String obj = future.get(1000 * 1, TimeUnit.MILLISECONDS); //任务处理超时时间设为 1 秒  
	            System.out.println("任务成功返回:" + obj);  
	        } catch (TimeoutException ex) {  
	            System.out.println("超时异常....");  
	            ex.printStackTrace();  
	        } catch (Exception e) {  
	            System.out.println("处理失败.");  
	            e.printStackTrace();  
	        }  
	        // 关闭线程池  
	        exec.shutdown(); 
	}
}

-------运行以上代码,将输出以下信息------
处理超时啦....
java.util.concurrent.TimeoutException
	at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:204)
	at com.java265.other.Test13.main(Test13.java:30)

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202204/16489747182665.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者