线程执行设置超时时间

import java.util.concurrent.*;

/**
 * 记录,备忘……
 *      线程执行设置超时时间
 */
public class Main2 {

    // 定义线程池,推荐手动创建线程池: https://blog.csdn.net/LLLLLiSHI/article/details/88057655
    private static ExecutorService pool = Executors.newFixedThreadPool(1);

    /**
     *  jdk的api:Future类已经提供满足的api
     */
    public static void main(String[] args) {
        System.out.println("主程序执行开始……");
        //定义线程
        Callable call = new Callable<String>(){
            @Override
            public String call() throws Exception {
                // 设置2秒睡眠
                TimeUnit.SECONDS.sleep(2);
                return "这是线程执行结果……";
            }
        };

        // 手动控制线程
        Future result = pool.submit(call);
        try {
            // 如果在超时时间内,没有数据返回:则抛出TimeoutException异常
            Object callResult = result.get(1, TimeUnit.SECONDS);
            System.out.println(callResult);
        } catch (InterruptedException e) {
            System.out.println("InterruptedException发生");
        } catch (ExecutionException e) {
            System.out.println("ExecutionException发生");
        } catch (TimeoutException e) {
            System.out.println("TimeoutException发生,意味着线程超时报错");
        }
        System.out.println("主程序执行完成……");
    }

}

参考https://blog.csdn.net/a9529lty/article/details/42711029

猜你喜欢

转载自blog.csdn.net/LLLLLiSHI/article/details/88644558