Java – Thread


Java menyediakan dukungan built-in untuk pemrograman multithreaded. Sebuah program multithreaded berisi dua atau lebih bagian yang dapat dijalankan secara bersamaan. Setiap bagian dari program semacam ini disebut sebuah thread, dan setiap thread mendefinisikan path terpisah dari eksekusi.

Saya perlu mendefinisikan istilah lain yang berhubungan dengan Thread: Proses: Proses terdiri dari ruang memori yang dialokasikan oleh sistem operasi yang dapat berisi satu atau lebih Thread. Sebuah thread tidak bisa eksis sendiri, melainkan harus menjadi bagian dari proses. Sebuah proses tetap berjalan sampai semua non-daemon Thread selesai mengeksekusi.

Multithreading memungkinkan anda untuk menulis program yang sangat efisien yang memaksimalkan penggunaan CPU, karena waktu idle dapat dijaga agar tetap minimum.

Untuk membuat suatu program dengan menggunakan fitur multitasking atau multithreading. Kita harus menginisialisasikan suatu objek yang bertipe Thread di java. Pada pemrograman java, kita dapat membuatnya dengan 2 cara yaitu :

1. Dengan cara mengimplementasikan sebuah interface Runnable.
2. Dengan cara menurunkan (extends) kelas Thread.

Siklus hidup Thread:

Sebuah thread melewati berbagai tahapan dalam siklus hidupnya. Sebagai contoh, sebuah thread lahir, dimulai, berjalan, dan kemudian meninggal. Diagram berikut menunjukkan siklus hidup lengkap dari sebuah thread.

Tahap yang disebutkan di atas dijelaskan di sini:

New : Sebuah thread baru dimulai siklus hidupnya pada keadaan baru. Masih dalam kondisi ini sampai program menjalankan thread. Hal ini juga disebut sebagai thread lahir.

Runnable : Setelah thread baru lahir dijalankan, thread menjadi runnable. Sebuah thread dalam kondisi ini ini dianggap telah mengeksekusi task-nya.

Waiting : Kadang-kadang transisi thread ke keadaan menunggu(waiting state) selama thread menunggu thread lain untuk menjalankan task. Sebuah transisi thread kembali ke keadaan runnable hanya ketika sinyal thread lain menunggu untuk melanjutkan eksekusi.

Timed waiting : Sebuah runnable thread dapat memasuki keadaan timed waiting untuk interval tertentu. Sebuah thread  dalam keadaan transisi ini kembali ke keadaan runnable  ketika interval waktu berakhir atau ketika event menunggu untuk terjadi.

Terminated : Sebuah thread runnable memasuki keadaan dihentikan(terminated) ketika menyelesaikan task-nya atau berakhir(terminate).

Prioritas Thread:

Setiap thread Java mempunyai prioritas yang membantu sistem operasi menentukan urutan thread dijadwalkan.

Prioritas Java berada dalam kisaran antara MIN_PRIORITY (konstanta 1) dan MAX_PRIORITY (konstanta 10). Secara default, setiap thread diberikan prioritas NORM_PRIORITY (konstanta 5).

Thread dengan prioritas lebih tinggi lebih penting untuk program dan harus dialokasikan sebelum thread dengan lower-priority(prioritas lebih rendah).

Membuat Thread dengan Mengimplementasikan Runnable:

Cara termudah untuk membuat sebuah thread adalah untuk membuat sebuah kelas yang mengimplementasikan interface Runnable.

Untuk mengimplementasikan Runnable, kelas hanya perlu menerapkan metode tunggal yang disebut run(), yang dinyatakan seperti ini:

public void run( )

Anda akan menentukan kode yang merupakan thread baru dalam method run(). Adalah penting untuk memahami bahwa run () dapat memanggil method lain, menggunakan kelas-kelas lain, dan menyatakan variabel, seperti thread utama.

Setelah anda membuat sebauh kelas yang mengimplementasikan Runnable, anda akan instantiate sebuah objek dari tipe Thread dari dalam kelas tersebut. Thread mendefinisikan beberapa construktor. Salah satu yang akan kita gunakan adalah ditampilkan di sini:

Thread(Runnable threadOb, String threadName);

Di sini threadOb adalah sebuah instance dari sebuah kelas yang mengimplementasikan interface Runnable dan nama thread baru ditentukan oleh threadName.

Setelah thread baru dibuat, tidak akan mulai berjalan sampai anda memanggil method start(), yang dideklarasikan dalam Thread. Method start() ditampilkan di sini:

void start( );

Contoh :

public class RunnableThread implements Runnable {
    Thread thread;
    RunnableThread(String name) {
        thread = new Thread(this, name);
        thread.start();
    }
    public void run() {
        String name = thread.getName();
        for (int i = 0; i < 100; i++) {
            System.out.println(name);
        }
    }
    public static void main(String[] args) {
        new RunnableThread(“A”);
        new RunnableThread(“B”);
        new RunnableThread(“C”);
        new RunnableThread(“D”);
    }
}

 Membuat Thread dengan Menurunkan (extend) class Thread

Cara kedua untuk membuat sebuah thread adalah untuk menciptakan sebuah kelas baru yang menurunkan(extend) Thread, dan kemudian untuk membuat sebuah instance dari kelas itu.

Kelas extend harus override metode run(), yang merupakan entry point untuk thread baru. Hal ini juga harus memanggil start() untuk memulai eksekusi dari thread baru.

Contoh:

package thread;
public class cetakNamaThread extends Thread {
    cetakNamaThread(String name) {
        super(name);
        //menjalankan thread dengan satu kali instantiate
        start();
    }
    public void run() {
        String name = getName();
        for (int i = 0; i < 100; i++) {
            System.out.print(name);
        }
    }
    public static void main(String[] args) {
        cetakNamaThread ctt1 = new cetakNamaThread(“A”);
        cetakNamaThread ctt2 = new cetakNamaThread(“B”);
        cetakNamaThread ctt3 = new cetakNamaThread(“C”);
        cetakNamaThread ctt4 = new cetakNamaThread(“D”);
    }
}
Iklan
  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: