如果超出数据库容量,我的代码中有一个线程清理器正在创建,每次插入数据库时都会检查容量。当文件数量超过时,我想为这个清洁器和清洁器添加更多功能,比如 10000 个文件。新功能应该按计划运行。
我希望能够以 2 种方式清理数据库:
1. 按需。
2. 预定,每天 X 小时。
使用哪个并发 java 类?
如何确保上述两种方式使用相同的线程?
如果超出数据库容量,我的代码中有一个线程清理器正在创建,每次插入数据库时都会检查容量。当文件数量超过时,我想为这个清洁器和清洁器添加更多功能,比如 10000 个文件。新功能应该按计划运行。
我希望能够以 2 种方式清理数据库:
1. 按需。
2. 预定,每天 X 小时。
使用哪个并发 java 类?
如何确保上述两种方式使用相同的线程?
执行 DB 清理的代码应该完全脱离调度(单一职责原则),以便您可以随时从其他代码中执行它。
至于调度,我建议您查看Quartz scheduler,并熟悉 CRON 以便您可以将其提取到属性中,以便在不修改代码的情况下更改调度触发器。
您应该同步您的代码,以便同时执行不超过一个清理,这应该很容易使用标准synchronize
.
如果你想让它变得非常简单并且不想添加新的依赖项,你可以使用标准的 Java 解决方案:Timer。Timer#scheduleAtFixedRate可以提供固定速率执行。这意味着每当出现新需求时(例如,不要在周末安排),您都必须添加额外的代码。