Catatan Penerjemah: Saya pribadi berpikir bahwa menggunakan tugas-tugas berjangka waktu untuk menjalankan pengumpulan sampah bukanlah contoh yang baik. Data, file, dll.
Dalam artikel ini, saya akan memperkenalkan 3 metode implementasi yang berbeda:
1. Implementasi utas biasa
2. Implementasi Timertask
3. Implementasi Layanan Terjadwal
1. Benang biasa
Ini adalah hal yang paling umum. Ini dapat diimplementasikan dengan cepat dan mudah, kodenya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
Tugas kelas publik1 {
public static void main (string [] args) {
// Jalankan dalam sedetik
Final Long TimeInterval = 1000;
Runnable runnable = new runnable () {
public void run () {
while (true) {
// -------- kode untuk tugas yang harus dijalankan
System.out.println ("Halo !!");
// ---------- berakhir di sini
mencoba {
Thread.sleep (timeInterval);
} catch (InterruptedException e) {
e.printstacktrace ();
}
}
}
};
Thread thread = utas baru (runnable);
thread.start ();
}
}
2. Gunakan timer dan timertask
Implementasi di atas sangat cepat dan mudah, tetapi juga tidak memiliki fungsionalitas.
Dibandingkan dengan metode di atas, menggunakan timer dan timertask memiliki manfaat berikut:
1. Terkendali saat memulai dan membatalkan tugas
2. Anda dapat menentukan waktu tunda yang Anda inginkan saat menjalankan tugas untuk pertama kalinya
Selama implementasi, kelas timer dapat menjadwalkan tugas, dan Timertask mengimplementasikan tugas -tugas spesifik dalam metode run ().
Instance timer dapat menjadwalkan multitasking, dan ini aman.
Ketika konstruktor timer dipanggil, itu menciptakan utas yang dapat digunakan untuk menjadwalkan tugas.
Ini kodenya:
Salinan kode adalah sebagai berikut:
impor java.util.timer;
impor java.util.timertask;
tugas kelas publik2 {
public static void main (string [] args) {
TimerTask Task = new timertask () {
@Mengesampingkan
public void run () {
// Tugas untuk dijalankan di sini
System.out.println ("Hello !!!");
}
};
Timer timer = timer baru ();
lama penundaan = 0;
Periode panjang = 1 * 1000;
// menjadwalkan tugas yang akan dijalankan dalam interval
timer.scheduleatFixedrate (tugas, penundaan,
Integerperiod);
} // akhir utama
}
Kelas -kelas ini ada sejak JDK 1.3.
3. Terjadwal ExecutorService
Terjadwal ExecutorService diperkenalkan sebagai kelas alat bersamaan dari Java SE 5 java.util.concurrent, yang merupakan metode implementasi tugas waktu yang paling ideal.
Dibandingkan dengan dua metode di atas, ia memiliki manfaat berikut:
1. Dibandingkan dengan utas tunggal Timer, itu mengeksekusi tugas melalui kumpulan utas.
2. Anda dapat mengatur waktu tunda untuk eksekusi tugas pertama
3. Berikan perjanjian yang baik untuk mengatur interval waktu eksekusi
Berikut ini adalah kode implementasi.
Salinan kode adalah sebagai berikut:
impor java.util.concurrent.Executors;
impor java.util.concurrent.scheduledExecutorService;
impor java.util.concurrent.timeunit;
Tugas kelas publik3 {
public static void main (string [] args) {
Runnable runnable = new runnable () {
public void run () {
// Tugas untuk dijalankan di sini
System.out.println ("Halo !!");
}
};
Terjadwal ExecutorService Service = Eksekutor
.newsinglethreadscheduledExecutor ();
service.scheduleatFixedRate (runnable, 0, 1, timeunit.seconds);
}
}