如何实现方法超时中断

  • Post author:
  • Post category:其他

美好的一天开始了,码农生活继续,今天唠一唠如何实现方法中断,解决思路呢就是将要中断的方法在线程中执行,线程的执行可操控性高,可以中断线程,睡眠线程等,废话不多说,先上Demo.

package com.shengtianyizi;

import java.util.concurrent.*;

/**
 * ClassName    MethodExecuteInterruptDemo
 * Package	    com.shengtianyizi
 * Description  实现方法执行中断,利用线程池futch来实现
 *
 * @author cyf
 * @date 2020/8/28 10:20
 */
public class MethodExecuteInterruptDemo {

    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(10);
        Future<Boolean> submit = executorService.submit(new Callable<Boolean>() {
            @Override
            public Boolean call() throws Exception {
                //执行业务
                return doSomething();
            }
        });
        Boolean flag = false;
        try {
            //等待三秒结果响应如果实现,则抛出超时异常
            flag = submit.get(3, TimeUnit.SECONDS);
            System.out.println("结果为: " + flag);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("异常结果为: " + flag);
        } finally {
            executorService.shutdown();
        }
    }

    private static boolean doSomething() throws InterruptedException {
        System.out.println("开始睡眠");
        Thread.sleep(2000);
        System.out.println("结束睡眠");
        return true;
    }
}

在这里自己可以封装一个工具类,任意方法都可以做这个中断操作,我这里就不演示了,利用Future的特性,等待线程响应正好可以满足我们的需求.

下次我们讲解一下多线程.(๑′ᴗ‵๑)


版权声明:本文为qq_36872046原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。