Java任務(wù)調(diào)度框架通常用于在指定的時間間隔或特定時間點執(zhí)行任務(wù)。常見的Java任務(wù)調(diào)度框架有Quartz和Spring Task。
下面是使用Quartz和Spring Task兩種任務(wù)調(diào)度框架的示例:
首先需要添加Quartz的依賴:
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
然后可以創(chuàng)建一個Quartz的Job類,實現(xiàn)org.quartz.Job
接口,并實現(xiàn)execute()
方法,在該方法中編寫任務(wù)的具體邏輯。
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
// 執(zhí)行任務(wù)邏輯
System.out.println("執(zhí)行任務(wù)");
}
}
接下來可以創(chuàng)建一個調(diào)度器,并設(shè)置任務(wù)的觸發(fā)條件和執(zhí)行時間間隔:
import org.quartz.*;
public class SchedulerExample {
public static void main(String[] args) throws SchedulerException {
// 創(chuàng)建調(diào)度器
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// 創(chuàng)建任務(wù)
JobDetail job = JobBuilder.newJob(MyJob.class)
.withIdentity("myJob", "group1")
.build();
// 創(chuàng)建觸發(fā)器,定義執(zhí)行時間間隔
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger", "group1")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10)
.repeatForever())
.build();
// 將任務(wù)和觸發(fā)器添加到調(diào)度器
scheduler.scheduleJob(job, trigger);
// 啟動調(diào)度器
scheduler.start();
}
}
首先需要添加Spring Task的依賴,如果使用Spring Boot,可以直接在pom.xml中添加如下依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
然后在一個Java類上添加@EnableScheduling
注解,表示啟用任務(wù)調(diào)度功能。然后可以在需要執(zhí)行的方法上添加@Scheduled
注解,指定任務(wù)的執(zhí)行時間間隔或特定時間點。
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
@EnableScheduling
public class SchedulerExample {
@Scheduled(fixedRate = 10000) // 每10秒執(zhí)行一次
public void myTask() {
// 執(zhí)行任務(wù)邏輯
System.out.println("執(zhí)行任務(wù)");
}
}
以上是使用Quartz和Spring Task兩種任務(wù)調(diào)度框架的簡單示例,根據(jù)實際需求可以進行更復(fù)雜的配置和定制。