1. Java實現定時任務方式
public class Demo01 {
staticlongcount = 0;
public static void main(String[] args) {
Runnable runnable = new Runnable() {
@Override
publicvoid run() {
while (true) {
try {
Thread.sleep(1000);
count++;
System.out.println(count);
} catch (Exception e) {
// TODO: handle exception
}
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}
}
2. TimerTask實現定時任務
/**
* 使用TimerTask類實現定時任務
*/
public class Demo02 {
static long count = 0;
public static void main(String[] args) {
TimerTask timerTask = new TimerTask() {
@Override
publicvoid run() {
count++;
System.out.println(count);
}
};
Timer timer = new Timer();
// 天數
longdelay = 0;
// 秒數
longperiod = 1000;
timer.scheduleAtFixedRate(timerTask, delay, period);
}
}
3.ScheduledExecutorService 實現
publicclass Demo003 {
publicstaticvoid main(String[] args) {
Runnable runnable = new Runnable() {
publicvoid run() {
// task to run goes here
System.out.println("Hello !!");
}
};
ScheduledExecutorServiceservice = Executors.newSingleThreadScheduledExecutor();
// 第二個參數爲首次執行的延時時間,第三個參數爲定時執行的間隔時間
service.scheduleAtFixedRate(runnable, 1, 1, TimeUnit.SECONDS);
}
}
4.spring boot+ quartz 實現方式
1.引入maven依賴
<!-- quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.1</version>
</dependency>
2.任務調度類
publicclass MyJob implements Job {
publicvoid execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("quartz MyJob date:" + new Date().getTime());
}
}
3.啓動任務類
//1.創建Scheduler的工廠
SchedulerFactory sf = new StdSchedulerFactory();
//2.從工廠中獲取調度器實例
Scheduler scheduler = sf.getScheduler();
//3.創建JobDetail
JobDetail jb = JobBuilder.newJob(MyJob.class)
.withDescription("this is a ram job") //job的描述
.withIdentity("ramJob", "ramGroup") //job 的name和group
.build();
//任務運行的時間,SimpleSchedle類型觸發器有效
longtime= System.currentTimeMillis() + 3*1000L; //3秒後啓動任務
Date statTime = new Date(time);
//4.創建Trigger
//使用SimpleScheduleBuilder或者CronScheduleBuilder
Trigger t = TriggerBuilder.newTrigger()
.withDescription("")
.withIdentity("ramTrigger", "ramTriggerGroup")
//.withSchedule(SimpleScheduleBuilder.simpleSchedule())
.startAt(statTime) //默認當前時間啓動
.withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")) //兩秒執行一次
.build();
//5.註冊任務和定時器
scheduler.scheduleJob(jb, t);
//6.啓動調度器
scheduler.start();