java - 如何在一定时间内定期运行作业
问题描述
由于容器的生命周期设置为 5 小时,因此计划定期运行作业并在一定时间后关闭执行以清理线程。JavaScheduledExecutorService
提供了定期安排作业的功能,但关闭方法将立即关闭执行程序服务,而不是在一段时间后关闭。有没有办法处理这种情况?任何人都知道是否有更好的 api 在 Java 中使用?任何建议表示赞赏
解决方案
为什么不安排 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
,因为它只会运行一次。
推荐阅读
- vim - [Vim][Markdown] 如何禁用 url 折叠?
- intercom - 使用 Intercom 的 API 从分段请求用户时结果不一致
- ios - 文本字段和图像为零
- scala - 有条件地构建避免突变的列表
- format - 如何更改 WHMCS 价格小数分隔符?
- java - 在具有多个模块的配置中找不到 Java Bean
- openid - .AspNetCore.Correlation。未找到国家财产
- java - Spring MVC:无法连接到 Rest 服务
- sql-server-2008 - CTGIN2076E: 用于任务验证的异常运行数据库方法
- node.js - 查询期间要在服务器上执行的MongoDB密码