Akhir-akhir ini saya telah menggunakan loop dengan jumlah besar untuk mencetak Hello World
:
int counter = 0;
while(true) {
//loop for ~5 seconds
for(int i = 0; i < 2147483647 ; i++) {
//another loop because it's 2012 and PCs have gotten considerably faster :)
for(int j = 0; j < 2147483647 ; j++){ ... }
}
System.out.println(counter + ". Hello World!");
counter++;
}
Saya mengerti bahwa ini adalah cara yang sangat konyol untuk melakukannya, tetapi saya belum pernah menggunakan pustaka waktu di Jawa. Bagaimana orang akan memodifikasi di atas untuk mencetak setiap katakan 3 detik?
Jawaban:
Anda juga dapat melihat
Timer
danTimerTask
kelas - kelas yang dapat Anda gunakan untuk menjadwalkan tugas Anda untuk dijalankan setiapn
detik.Anda memerlukan kelas yang memperluas
TimerTask
dan menimpapublic void run()
metode, yang akan dieksekusi setiap kali Anda melewati sebuah instance dari kelas itu ketimer.schedule()
metode ..Berikut ini contoh, yang mencetak
Hello World
setiap 5 detik: -sumber
schedule
akan dijalankan sekali setelah penundaan yang ditentukan. 3-paramschedule
atauscheduleAtFixedRate
perlu digunakan.ExecutorService
untuk tugas-tugas ini. Itu benar-benar peningkatan besar atas Thread API tradisional. Hanya saja tidak menggunakannya pada saat menjawab.Timer timer = new Timer(true);
harus ditetapkantrue
sebagai deamon. Kecuali Anda ingin timer tetap berjalan setelah menutup aplikasi.Jika Anda ingin melakukan tugas berkala, gunakan a
ScheduledExecutorService
. Khususnya PenjadwalanExecutorService.scheduleAtFixedRateKode:
sumber
TimerTask
varian. Menariknya, saya perhatikan bahwa jawaban yang diterima sebenarnya tidak benar: \ Umur kedua API,ScheduledExecutorService
adalah deklaratif yang lebih intuitif. PenggunaanTimeUnit
sebagai parameter membuatnya lebih jelas apa yang terjadi. Lewat sudah hari-hari kode seperti5*60*1000 // 5 minutes
.Runnable helloRunnable = () -> { /*code */ };
yang lebih indah;)Coba lakukan ini:
Kode ini akan menjalankan cetak untuk menghibur Hello World setiap 5000 milidetik ( 5 detik). Untuk info lebih lanjut, baca https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.html
sumber
Saya mencari tahu dengan timer, semoga membantu. Saya telah menggunakan timer dari
java.util.Timer
danTimerTask
dari paket yang sama. Lihat di bawah:sumber
Anda dapat menggunakan
Thread.sleep(3000)
di dalam untuk loop.Catatan: Ini akan membutuhkan
try/catch
blokir.sumber
infinite loop dibuat tugas penjadwal iklan dikonfigurasi.
sumber
Cara termudah adalah dengan mengatur utas utama agar tidur 3000 milidetik (3 detik):
Ini akan menghentikan utas setidaknya X milidetik. Utas bisa tidur lebih lama, tapi itu tergantung JVM. Satu-satunya hal yang dijamin adalah bahwa utas akan tidur setidaknya milidetik. Lihatlah
Thread#sleep
dokumen:sumber
Penggunaan
java.util.Timer
danTimer#schedule(TimerTask,delay,period)
metode akan membantu Anda.sumber
Ini adalah cara sederhana untuk menggunakan utas di java:
sumber
Apa yang dia katakan. Anda dapat menangani pengecualian sesuka Anda, tetapi Thread.sleep (milidetik); adalah rute terbaik untuk ditempuh.
sumber
Berikut cara sederhana lain menggunakan antarmuka Runnable di Thread Constructor
sumber
Menambahkan
Thread.sleep
sumber
Untuk aplikasi kecil tidak masalah untuk menggunakan Timer dan TimerTask seperti yang disebutkan Rohit tetapi dalam aplikasi web saya akan menggunakan Quartz Scheduler untuk menjadwalkan pekerjaan dan untuk melakukan pekerjaan berkala seperti itu.
Lihat tutorial untuk penjadwalan Kuarsa.
sumber
sumber