java定时器
什么是Java定时器?
Java 定时器就是在给定的间隔时间执行自己的任务; Java实现定时器有以下几种:
通过Timer来实现定时任务
Timer 是来自 java.util.Timer
指定时间执行任务
/**
* @author spp
* @date 2020-10-14 09:04
**/
public class TimerTest {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("任务执行:" + System.currentTimeMillis());
}
}, 5000);
System.out.println("任务开始:"+System.currentTimeMillis());
//取消任务
//timer.cancel();
}
}
结果
延后执行,随后以固定时间执行任务
/**
* @author spp
* @date 2020-10-14 09:04
**/
public class TimerTest {
public static void main(String[] args) {
Timer timer = new Timer();
//同scheduleAtFixedRate
timer.schedule(new TimerTask() {
public void run() {
System.out.println("任务执行:" + System.currentTimeMillis());
}
}, 5000,1000); //延迟5秒执行,随后每一秒执行一次
System.out.println("任务开始:"+System.currentTimeMillis());
//取消任务
//timer.cancel();
}
}
结果
任务开始:1602638067502
任务执行:1602638072502
任务执行:1602638073502
任务执行:1602638074503
任务执行:1602638075503
任务执行:1602638076503
任务执行:1602638077503
通过线程池ScheduledExecutorService
指定时间执行任务
public static void main(String[] args) {
//通过线程池ScheduledExecutorService
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
scheduledExecutorService.schedule(()->{
System.out.println("任务执行:" + System.currentTimeMillis());
},1000, TimeUnit.MILLISECONDS); //参数说明:第一个执行的任务;第二个推迟的时间;第三个时间单位
System.out.println("任务开始:"+System.currentTimeMillis());
}
结果
任务开始:1602638536832
任务执行:1602638537833
执行固定定时任务
public static void main(String[] args) {
//通过线程池ScheduledExecutorService
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
scheduledExecutorService.scheduleWithFixedDelay(()->{
System.out.println("任务执行:" + System.currentTimeMillis());
},2000, 1000,TimeUnit.MILLISECONDS); //参数说明:第一个执行的任务;第二个首次执行推迟的时间;第三个随后执行的推迟时间;第四个时间单位
System.out.println("任务开始:"+System.currentTimeMillis());
}
结果
任务开始:1602638655640
任务执行:1602638657641
任务执行:1602638658643
任务执行:1602638659645
定时器框架
Spring Task
QuartZ
有的时候Java代码定时任务也会让Linux上执行,也就是 Linux Cron
转自: