Rumah > Java > javaTutorial > Pembangunan Java: Bagaimana untuk melaksanakan penjadualan tugas teragih dan tugas berjadual

Pembangunan Java: Bagaimana untuk melaksanakan penjadualan tugas teragih dan tugas berjadual

WBOY
Lepaskan: 2023-09-21 14:34:56
asal
1446 orang telah melayarinya

Pembangunan Java: Bagaimana untuk melaksanakan penjadualan tugas teragih dan tugas berjadual

Pembangunan Java: Bagaimana untuk melaksanakan penjadualan tugas teragih dan tugas bermasa

Tinjauan:
Dengan sistem yang tersebar luas penjadualan tugas yang diedarkan dan pelaksanaan tugas yang dijadualkan telah menjadi semakin penting. Dalam pembangunan Java, kita boleh menggunakan beberapa rangka kerja dan alatan untuk melaksanakan penjadualan tugas teragih dan tugas berjadual. Artikel ini akan menumpukan pada cara menggunakan rangka kerja Kuarza dan Spring Boot untuk melaksanakan kedua-dua fungsi ini dan menyediakan contoh kod.

1. Gunakan rangka kerja Kuarza untuk melaksanakan penjadualan tugas
Quartz ialah rangka kerja penjadualan kerja sumber terbuka yang boleh melaksanakan fungsi penjadualan tugas dalam aplikasi Java. Ia menyediakan API yang kaya dan kaedah konfigurasi yang fleksibel.

  1. Memperkenalkan tanggungan
    Pertama sekali, kami perlu memperkenalkan kebergantungan Kuarza ke dalam projek. Anda boleh menambah kebergantungan berikut dalam fail pom.xml projek:

    <dependency>
     <groupId>org.quartz-scheduler</groupId>
     <artifactId>quartz</artifactId>
     <version>2.3.2</version>
    </dependency>
    Salin selepas log masuk
  2. Buat kelas Pekerjaan
    Seterusnya, kita perlu menentukan kelas Pekerjaan untuk pelaksanaan Khusus logik tugas. Kelas Job perlu melaksanakan antara muka org.quartz.Job dan mengatasi kaedah laksana. Contohnya:

    public class MyJob implements Job {
     @Override
     public void execute(JobExecutionContext context) throws JobExecutionException {
         // 执行具体的任务逻辑
         System.out.println("执行任务...");
     }
    }
    Salin selepas log masuk
  3. Buat penjadual dan pencetus
    Seterusnya, kita perlu mencipta penjadual dan pencetus untuk menjadualkan masa pelaksanaan tugas. Penjadual bertanggungjawab untuk mengurus hubungan antara tugas dan pencetus, dan pencetus menentukan peraturan masa pelaksanaan tugas.
// 创建调度器
Scheduler scheduler = new StdSchedulerFactory().getScheduler();

// 创建触发器
Trigger trigger = TriggerBuilder.newTrigger()
    .withIdentity("trigger1", "group1")  // 触发器的名称和组名
    .startNow()                          // 立即开始执行
    .withSchedule(SimpleScheduleBuilder.simpleSchedule()
        .withIntervalInSeconds(10)        // 定义任务的执行间隔为10秒
        .repeatForever())                  // 重复执行
    .build();

// 创建JobDetail
JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
    .withIdentity("job1", "group1")       // Job的名称和组名
    .build();

// 将JobDetail和Trigger添加到调度器
scheduler.scheduleJob(jobDetail, trigger);

// 启动调度器
scheduler.start();
Salin selepas log masuk

Kod di atas mencipta penjadual dan pencetus, di mana pencetus mentakrifkan peraturan masa pelaksanaan tugasan dan tugasan akan dilaksanakan berulang kali setiap 10 saat.

2. Gunakan Spring Boot untuk melaksanakan tugas berjadual
Spring Boot ialah rangka kerja yang digunakan untuk memudahkan pembangunan aplikasi Spring. Ia menyediakan cara yang mudah dan pantas untuk mencipta aplikasi Spring gred pengeluaran kendiri.

  1. Memperkenalkan kebergantungan
    Pertama sekali, kami perlu memperkenalkan kebergantungan Spring Boot ke dalam projek. Anda boleh menambah kebergantungan berikut dalam fail pom.xml projek:

    <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter</artifactId>
     <version>2.5.4</version>
    </dependency>
    Salin selepas log masuk
  2. Cipta tugas berjadual
    Seterusnya, kami boleh menggunakan anotasi Spring Boot @Scheduled untuk mentakrifkan tugas yang dijadualkan. Anotasi @Scheduled boleh digunakan pada kaedah kelas untuk menentukan peraturan masa untuk pelaksanaan kaedah.
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
@EnableScheduling
public class MyTask {

    @Scheduled(cron = "0 0/1 * * * ?")  // 每分钟执行一次
    public void doTask() {
        // 执行具体的任务逻辑
        System.out.println("执行任务...");
    }
}
Salin selepas log masuk
  1. Mulakan tugas berjadual
    Akhirnya, kami perlu menambah anotasi @EnableScheduling ke kelas permulaan Spring Boot untuk memulakan pelaksanaan tugas yang dijadualkan.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
Salin selepas log masuk

Kod di atas mentakrifkan tugas berjadual yang dilaksanakan setiap minit dan membolehkan pelaksanaan tugas yang dijadualkan dalam kelas permulaan.

Ringkasan:
Menggunakan rangka kerja Kuarza, penjadualan tugas teragih boleh dilaksanakan Dengan mencipta penjadual dan pencetus, dan mentakrifkan logik tugasan tertentu, masa pelaksanaan dan peraturan tugasan boleh diuruskan secara fleksibel. Menggunakan anotasi @Scheduled Spring Boot boleh melaksanakan tugas berjadual dengan mudah Anda hanya perlu menambah anotasi pada kaedah dan menentukan peraturan masa pelaksanaan.

Di atas adalah pengenalan kepada cara melaksanakan penjadualan tugas teragih dan tugas berjadual dalam pembangunan Java. Jika anda mempunyai lebih banyak soalan, sila berasa bebas untuk berkomunikasi dan berbincang.

Atas ialah kandungan terperinci Pembangunan Java: Bagaimana untuk melaksanakan penjadualan tugas teragih dan tugas berjadual. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan