Saya menemukan pertanyaan serupa ditanyakan di sini tetapi tidak ada jawaban yang memuaskan saya. Jadi ulangi pertanyaannya lagi-
Saya memiliki tugas yang perlu dilakukan secara berkala (katakanlah interval 1 menit). Apa keuntungan menggunakan Timertask & Timer untuk melakukan ini dibandingkan membuat utas baru yang memiliki loop tak terbatas dengan tidur?
Potongan kode menggunakan timertask-
TimerTask uploadCheckerTimerTask = new TimerTask(){
public void run() {
NewUploadServer.getInstance().checkAndUploadFiles();
}
};
Timer uploadCheckerTimer = new Timer(true);
uploadCheckerTimer.scheduleAtFixedRate(uploadCheckerTimerTask, 0, 60 * 1000);
Potongan kode menggunakan Thread dan sleep-
Thread t = new Thread(){
public void run() {
while(true) {
NewUploadServer.getInstance().checkAndUploadFiles();
Thread.sleep(60 * 1000);
}
}
};
t.start();
Saya benar-benar tidak perlu khawatir jika saya melewatkan siklus tertentu jika eksekusi logika membutuhkan waktu lebih dari interval waktu.
Tolong komentari ini ..
Pembaruan:
Baru-baru ini saya menemukan perbedaan lain antara menggunakan Timer versus Thread.sleep (). Misalkan waktu sistem saat ini adalah 11:00. Jika kita mengembalikan waktu sistem ke 10:00 karena alasan tertentu, Timer akan BERHENTI menjalankan tugas hingga mencapai jam 11:00, sedangkan metode Thread.sleep () akan terus menjalankan tugas tanpa hambatan. Ini bisa menjadi pembuat keputusan utama dalam memutuskan apa yang akan digunakan di antara keduanya.