哪个java并发用于清理DB(按需/预定)

时间:2013-07-16 10:15:12

标签: java multithreading java.util.concurrent

我的代码中有一个线程清理器,如果超出了DB容量,则会在每次插入数据库时​​检查容量。我想为这个清洁工添加更多功能,并在文件数超过时清理,比方说10000文件。新功能应该按计划运行。

我希望能够以两种方式清理数据库:
1.按需。
2.预定,每天X小时。

使用哪个并发java类? 如何确保上述两种方式使用相同的线程?

1 个答案:

答案 0 :(得分:3)

执行DB清理的代码应该完全从调度中分离出来(单一责任原则),这样你就可以随时从其他代码中执行它。

至于调度,我建议您查看Quartz scheduler,熟悉CRON,以便将其提取到属性,以便在不修改代码的情况下更改调度触发器。

您应该同步代码,以便同时执行不超过一次清理,标准synchronize应该很容易。

如果您希望使其非常简单并且不想添加新的依赖项,则可以使用标准Java解决方案:Timer。 Timer#scheduleAtFixedRate可以提供固定费率执行。这意味着每当出现新要求时,您都必须添加额外的代码(例如,不要在周末安排)。