Rumah > Java > javaTutorial > teks badan

Berapa banyak cara yang ada untuk melaksanakan pemasa Java?

WBOY
Lepaskan: 2023-12-28 11:53:42
asal
1088 orang telah melayarinya

Berapa banyak cara yang ada untuk melaksanakan pemasa Java?

Terdapat banyak cara untuk melaksanakan pemasa Java termasuk kelas Pemasa, antara muka ScheduledExecutorService dan rangka kerja Kuarza.

1. Kelas Pemasa
Kelas Pemasa ialah kelas alat pemasa yang disediakan oleh Java, yang boleh digunakan untuk melaksanakan beberapa tugas yang dijadualkan. Ia boleh melaksanakan fungsi pemasa mudah, tetapi terdapat beberapa masalah dalam persekitaran berbilang benang.

Contoh kod:

import java.util.Timer;
import java.util.TimerTask;

public class TimerExample {
    public static void main(String[] args) {
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                // 定时任务的具体逻辑
                System.out.println("Task executed at: " + System.currentTimeMillis());
            }
        }, 1000); // 延迟1秒后执行
    }
}
Salin selepas log masuk

2. Antara muka ScheduledExecutorService
ScheduledExecutorService antara muka ialah antara muka yang disediakan oleh Java untuk membuat tugasan berjadual Ia adalah sub-antara muka ExecutorService dan boleh melaksanakan tugasan selepas kelewatan yang ditentukan secara berkala.

Contoh kod:

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ScheduledExecutorServiceExample {
    public static void main(String[] args) {
        ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
        executor.scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
                // 定时任务的具体逻辑
                System.out.println("Task executed at: " + System.currentTimeMillis());
            }
        }, 0, 1, TimeUnit.SECONDS); // 每隔1秒执行一次
    }
}
Salin selepas log masuk

3. Rangka kerja kuarza
Kuarza ialah rangka kerja penjadualan tugas berjadual sumber terbuka yang berkuasa yang boleh merealisasikan penjadualan tugas berjadual yang kompleks.

Contoh kod:

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.JobBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;

public class QuartzExample {
    public static class MyJob implements Job {
        @Override
        public void execute(JobExecutionContext context) throws JobExecutionException {
            // 定时任务的具体逻辑
            System.out.println("Task executed at: " + System.currentTimeMillis());
        }
    }

    public static void main(String[] args) throws SchedulerException {
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        scheduler.start();

        JobDetail job = JobBuilder.newJob(MyJob.class).build();

        Trigger trigger = TriggerBuilder.newTrigger()
                .startNow()
                .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(1)) // 每隔1秒执行一次
                .build();

        scheduler.scheduleJob(job, trigger);
    }
}
Salin selepas log masuk

Di atas adalah contoh kod kaedah pelaksanaan tugas berjadual yang biasa digunakan dalam Java Anda boleh memilih kaedah pelaksanaan yang sesuai mengikut keperluan tertentu.

Atas ialah kandungan terperinci Berapa banyak cara yang ada untuk melaksanakan pemasa Java?. 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