JAVA 定时方式大总结
除了Quartz之外,JAVA的定时方式总结如下几种:
方式一:java.util.Timer
java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks。
一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerTask一般是以匿名类的方式创建。
一个完整的Timer:
下面是一个完整的例子,由两个类组成,一个定制任务,一个调用java.util.Timer
定制任务:
2.调用java.util.Timer
根据上面的介绍,便可以在1秒后,每隔2秒执行一次程序
方式二:
ScheduledThreadPoolExecutor scheduledExecutor = new ScheduledThreadPoolExecutor(poolSize);
scheduledExecutor.scheduleAtFixedRate(myTask, initialDelay, run_period, TimeUnit.MINUTES);
myTask是一个实现Runnable接口的线程类。
imports:
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
方式三:
Runnable task = new DelegatingErrorHandlingRunnable(this,TaskUtils.LOG_AND_SUPPRESS_ERROR_HANDLER);
ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(new ThreadFactoryBuilder().setNameFormat(
"JdkExecutorJob-%1$d").build());
//scheduleAtFixedRatefixRate() 固定任务两次启动之间的时间间隔.
//scheduleAtFixedDelay() 固定任务结束后到下一次启动间的时间间隔.
scheduledExecutorService.scheduleAtFixedRate(task, initialDelay, period, TimeUnit.SECONDS);
imports:
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import com.google.common.util.concurrent.ThreadFactoryBuilder;