学习笔记:总结一下使用过的四种定时器方式。
1.java自带的定时器 timer
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("Time's up!");
}
},3*1000,1000);
2.利用线程池工具
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(2);
scheduledThreadPool.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("=========================");
}
}, 1000, 2000, TimeUnit.MILLISECONDS);`
`scheduledThreadPool.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println(System.currentTimeMillis()+"<><>"+System.nanoTime());
}
}, 1000, 2000, TimeUnit.MILLISECONDS);
3.用springboot自带的 @EnableScheduling
Main方法上开启@EnableScheduling
用@Scheduled(initialDelay = 2000,fixedDelay = 5000)来注解想要运行的方法
4.使用Quartz定时任务调度器,已放弃使用,原因是使用者不多。
5.用spirngboot定时器来实时访问数据库
Mapper中写语句:
@Select("SELECT id,user_name FROM t_zhx_user ORDER BY id DESC")
List<TZhxUser> getNameLimit2();
在方法中调用这个mapper
@Scheduled(cron = "*/15 * * * * *")
public void getNameLimit2() {
List<TZhxUser> nameLimit2 = tZhxUserMapper.getNameLimit2();
System.out.println("--------开始--------");
for (int i = 0; i <nameLimit2.size() ; i++) {
System.out.println(nameLimit2.get(i));
}
System.out.println("---------结束--------");
}