Java:处理crontab定时任务的最简单方法
通过spring可以实现最简单的处理crontab的定时任务,下面提供2种方法
方法一:
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;@Service
public class TestSerice {@Async@Scheduled(cron="autorunCron")public void doTask() {// do something}
}
这种方法需要添加如下2个annotation:
@EnableScheduling
@EnableAsync
方法二:
import javax.annotation.PostConstruct;import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Service;@Service
public class CronTaskService {@Value("${autorunCron}")private String autorunCron;@PostConstructpublic void initTask() {Runnable run = new Runnable() {@Overridepublic void run() {updateCache();}};executeTask(run, autorunCron);
}public void executeTask(Runnable task, String crontab) {ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();taskScheduler.setPoolSize(2);taskScheduler.setThreadNamePrefix("task-");taskScheduler.initialize();CronTrigger cronTrigger = new CronTrigger(crontab);taskScheduler.schedule(task, cronTrigger);}public void doTask() {// do something;}
}
这种方法灵活一些,可定制的空间更大。
以上2种方法最终采用哪种要根据实际情况来选择。