我需要每天执行一些任务。我可以使用ScheduledExecutorService吗?说一段始终以特定间隔运行的代码。我怀疑我保持CPU忙于运行我的代码,但是这段代码将在一天,一周或一个月内运行我的实际任务取决于配置。
ScheduledExecutorService schedular = Executors.newScheduledThreadPool(1);
schedular.scheduleAtFixedRate(new MySchedular(), 1, 24, TimeUnit.HOUR);
或者我们有更好的选择吗?
答案 0 :(得分:1)
对于非常基本的需求,您确实可以使用Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobDetail job = JobBuilder.newJob(MySchedular.class)
.withIdentity("job1", "group1")
.build();
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.withSchedule(CronScheduleBuilder.dailyAtHourAndMinute(22, 00))
.build();
// Tell quartz to schedule the job using our trigger
scheduler.scheduleJob(job, trigger);
// and start it off
scheduler.start();
,但如果您想要执行复杂的操作,例如在当天的某个特定时间安排任务,则应考虑使用{{3} }。
以下是如何在晚上10点安排任务:
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger3", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0 22 00 * * ?"))
.build();
使用~
modifiers创建的相同触发器将是:
EditText editText = (EditText) findViewById(textView);
Spannable wordtoSpan = new SpannableString("Hello world");
wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 2, 6, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
editText.setHint(wordtoSpan);
答案 1 :(得分:0)
考虑到您使用的是Windows并且CronJob不可用,ScheduledExecutorService是您的一个非常好的选择。您需要关注的唯一问题是,如果由于某种原因您的进程终止而不是由于Windows重新启动,会发生什么。通常,关键系统具有某种Watchdog进程,可监视您的进程并在终止时重新启动它。但这可能超出了这个问题的范围。简而言之,您的问题的答案是:ScheduledExecutorService是正确的选择。