首页 > 解决方案 > 如何在一定时间内定期运行作业

问题描述

由于容器的生命周期设置为 5 小时,因此计划定期运行作业并在一定时间后关闭执行以清理线程。JavaScheduledExecutorService提供了定期安排作业的功能,但关闭方法将立即关闭执行程序服务,而不是在一段时间后关闭。有没有办法处理这种情况?任何人都知道是否有更好的 api 在 Java 中使用?任何建议表示赞赏

标签: javamultithreading

解决方案


为什么不安排 Executor 自行关闭呢?

    ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
    exec.scheduleAtFixedRate(() -> System.out.println("tick"), 1, 1, TimeUnit.SECONDS);
    exec.scheduleAtFixedRate(exec::shutdown, 5, 1, TimeUnit.SECONDS);

FixedRate关闭是否使用or并不重要FixedDelay,因为它只会运行一次。


推荐阅读