Java定时器(自学习记录)

313 阅读1分钟

学习笔记:总结一下使用过的四种定时器方式。

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("---------结束--------");
}