一.Quartz
@Slf4j
public class LikeTask extends QuartzJobBean {
@Autowired
ILikeService likeService;
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) {
log.info("LikeTask-------- {}", sdf.format(new Date()));
HashMap<String, Object> redisLikeData = RedisUtil.getLikeKeys();
likeService.saveData2Mysql(redisLikeData);
}
}
@Configuration
public class QuartzConfig {
private static final String LIKE_TASK_IDENTITY = "LikeTaskQuartz";
@Bean
public JobDetail quartzDetail() {
return JobBuilder.newJob(LikeTask.class).withIdentity(LIKE_TASK_IDENTITY).storeDurably().build();
}
@Bean
public Trigger quartzTrigger() {
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10)
.repeatForever();
return TriggerBuilder.newTrigger().forJob(quartzDetail())
.withIdentity(LIKE_TASK_IDENTITY)
.withSchedule(scheduleBuilder)
.build();
}
}
二.ScheduledExecutorService
@Component("MyApplicationRunner_1")
public class MyApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) {
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(10);
scheduledThreadPool.scheduleAtFixedRate(new ThreadPoolTimer(),
2, 2, TimeUnit.SECONDS);
}
}
public class ThreadPoolTimer implements Runnable {
@Override
public void run() {
System.out.println("线程池1中的方法被执行了");
}
}
三.TimerTask
@Component("MyApplicationRunner_2")
public class MyApplicationRunner implements ApplicationRunner {
private Timer timer;
private TimerTask timerTask;
@Override
public void run(ApplicationArguments args) {
timer = new Timer();
timerTask = new TimerTask() {
@Override
public void run() {
System.out.println("使用TimerTask做定时器成功执行");
}
};
timer.schedule(timerTask, 2000, 2000);
}
}