Pages

Stop Exploitasi Hutan Indonesia!

Kamis, 06 Desember 2012

APLIKASI menggunakan THREAD untuk menghitung mundur


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.