【发布时间】:2016-10-25 11:38:49
【问题描述】:
我需要每天执行一些任务。我可以为此使用 ScheduledExecutorService 吗?说一段总是以特定间隔运行的代码。我怀疑我总是让 CPU 忙于运行我的代码,但这段代码将在一天、一周或一个月内运行一次我的实际任务,具体取决于配置。
ScheduledExecutorService schedular = Executors.newScheduledThreadPool(1);
schedular.scheduleAtFixedRate(new MySchedular(), 1, 24, TimeUnit.HOUR);
或者我们有更好的选择吗?
【问题讨论】:
-
担心的不是 CPU 会很忙,因为当代码只是在等待(长达一个月的)计时器时,进程应该休眠。更大的问题来自进程结束(例如,机器重新启动)并且没有任何东西可以重新启动它。不同的系统对这种间隔任务有不同的机制,*nixs有
cron,但我不知道你的系统。 -
您使用哪个版本的 Java?
-
您使用哪个操作系统?
-
如果您使用 Linux,那么 CronJob 将是最好的选择,一切都由 cron 作业完成,您只需要提供要执行的脚本路径...。
-
@msw - 我使用的是 Windows 7,在 Windows 中,所有 .bat 文件都会在机器启动/登录时执行(如果你将它放在 C:\Users\
\AppData\Roaming\ Microsoft\Windows\Start Menu\Programs\Startup).. Windows 触发我的 .bat 文件,该文件触发我的 java 代码。无需手动触发。
标签: java multithreading concurrency