Java定时方式:

一、让线程sleep(不再赘述)

二、用Timer和TimerTask,比上一种方式的好处有:

  1. 当启动和去取消任务时可以控制
  2. 第一次执行任务时可以指定你想要的delay时间
Timer timer = new Timer(); // Timer是单线程的
long delay = 0;
long intervalPeriod = 2000;
TimerTask task = new TimerTask(){
    @Override
    public void run() {
        System.out.println("TimerTask执行...");
        timer.cancel(); // 取消定时器
    }
};
timer.scheduleAtFixedRate(task,0,intervalPeriod); // 0表示一开始就执行,也可以使用Date指定开始时间

三、 用ScheduledExecutorService是从的java.util.concurrent里,做为并发工具类被引进的,相比于上两个方法,它有以下好处:

  1. 相比于Timer的单线程,它是通过线程池的方式来执行任务的
  2. 提供了良好的约定,以便设定执行的时间间隔
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
Runnable run = () -> {
    System.out.println("ScheduledExecutorService线程池执行定时任务...");
    service.shutdown(); // 销毁线程池
};
service.scheduleAtFixedRate(run,0,2, TimeUnit.SECONDS); // 一开始就执行,两秒为一周期