APLIKASI
menggunakan THREAD untuk menghitung mundur
public class ThreadDasar extends Thread { // nama kelas yaitu ThreadDasar
private int
hitungMundur = 5;
private static int
jumlahThread = 0;
// Keterangan: Contoh
berikut membuat 5 thread, masing-masing memiliki nomor identifikasi unik yang
dibuat dengan menggunakan variabel statik.
public
ThreadDasar() {
super("Thread ke-" + ++jumlahThread);
start();
}
public void run()
{ // Metode run(), bisa di beban-lebihkan untuk melakukan tugas
yang kita butuhkan. Atau dengan kata lain run() adalah metode yang akan
dijalankan bersamaan dengan thread lain
while (true) {
System.out.println( getName() + " : " + hitungMundur ); // Pada program ini, objek thread
diberi nama melalui argumen pada konstruktornya. Nama ini dipanggil ketika
metoderun() melakukan penghitungan mundur, yaitu dengan menggunakan metode
getName().
if
(--hitungMundur == 0) // Metode run()
pada thread biasanya memiliki perulangan internal yang akan terus menerus
dipanggil hingga tidak lagi digunakan. Maka harus membuat suatu kondisi
sehingga bisa keluar dari perulangan tersebut (misalnya pada contoh di atas,
perulangan akan selesai jika hitungMundur bernilai 0). Biasanya, run()
dijalankan di dalam perulangan yang tak pernah berhenti.
return;
}
}
public static void main(String[] args) { // program utama
for(int i = 0;
i < 5; i++) //
perulangan yang bertipe data integer, i sama dengan 0, i kurang dari lima, dan
bertambah satu.
new
ThreadDasar(); // membuat
thread baru
}
}
KETERANGAN
: Pada metode main() / program utama, thread dibuat beberapa kali kemudian
dijalankan. Metode start() pada kelas Thread digunakan untuk melakukan tugas
tertentu sebelum metode run() dijalankan. Jadi, langkah-langkahnya adalah :
konstruktor dipanggil untuk membuat objek, kemudian memanggil start() untuk
melakukan konfigurasi thread, dan kemudian metode run() dijalankan. Jika kita
tidak memanggil start() maka metode run() tidak akan pernah dijalankan.
OUTPUT:
Untuk menjalankan program dapat menggunakan aplikasi textPad atau netbeans.
KETERANGAN
:
Keluaran
dari program ini akan berbeda setiap kali dijalankan, karena penjadwalan thread
tidak dapat ditentukan dengan pasti (non-deterministik). Bahkan, kita bisa
melihat perbedaan yang sangat jelas ketika kita menggunakan versi JDK yang
berbeda. Misalnya, JDK lama tidak melakukan pembagian waktu lebih cepat,
artinya, 1 thread mungkin bisa melakukan tugasnya dengan cepat hingga selesai
sebelum thread lain dijalankan. Pada JDK lain kita akan melihat program akan
mencetak 5 untuk seluruh thread hingga 1 untuk seluruh thread. Artinya
pembagian waktunya lebih baik, karena setiap thread memiliki kesempatan yang
sama untuk menjalankan program. Karenanya, untuk membuat suatu program
multi-threading, kita tidak boleh terpaku pada keluaran suatu kompiler. Program
kita harus dibuat seaman mungkin.