zoukankan      html  css  js  c++  java
  • 使用ScheduledExecutorService实现任务延迟

    在做项目的过程中,遇到一个场景:在审批流中,如果上级领导不审批,则在10分钟后自动审批。也就是要做一个任务在多长时间后执行的效果

    在不断的摸索中,想到了使用线程池,发现有个ScheduledExecutorService可以实现,现将实现过程记录下来

    /**
     * 测试延迟执行任务(只执行一次)
     */
    public class TestScheduledExecutor {
    
        public static void main(String[] args) {
            System.out.println("创建任务时间:" + new Date());
            // 创建一个定长线程池,支持定时及周期性任务执行
            ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
            // 建立一个延时任务,10秒钟之后执行
            ScheduledFuture<String> futrue = executor.schedule(new MyTask("haha"), 10, TimeUnit.SECONDS);
            try {
                // 如果任务执行完成,future.get()方法会返回一个null。注意,future.get()方法会产生阻塞
                System.out.println(futrue.get());
            } catch (Exception e) {
                e.printStackTrace();
            }
            // 当前线程执行完之后,关闭与线程池的连接
            executor.shutdown();
        }
    
    }
    
    class MyTask implements Callable<String> {
    
        private String name;
    
        public MyTask(String name) {
            super();
            this.name = name;
        }
    
        @Override
        public String call() throws Exception {
            System.out.println("任务开始执行时间:" + new Date());
            return name;
        }
    }

    这里设置的是10秒钟之后执行。看下执行效果:

    该任务执行完之后,会有返回值,我们可以通过返回值做其它的逻辑

  • 相关阅读:
    socket是什么
    0,1,2 代表标准输入、标准输出、标准错误
    认识程序的执行:从高级语言到二进制,以java为例
    97 条 Linux 运维工程师常用命令总结[转]
    rsync 参数配置说明[转]
    shell 脚本学习之内部变量
    ansible 入门学习(一)
    python 管理多版本之pyenv
    CentOS6 克 隆
    yum 本地仓库搭建
  • 原文地址:https://www.cnblogs.com/xuwenjin/p/9640081.html
Copyright © 2011-2022 走看看