Penggunaan Multithreading di Java

Setelah penjelasan mengenai program multitasking pada artikel sebelumnya. Kini saya coba buat programnya di java.

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 dalam 2 jalan yaitu :

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

Artikel ini menjelaskan cara yang pertama.

Pada interface Runnable, hanya ada satu method yang digunakan yaitu method run(), yang dideklarasi seperti dibawah ini :


public void run( );

Dalam method run() itu, kita dapat memanggil suatu method lain, menggunakan kelas lain dan variabel pada program utama. Bila sudah membuat kelas yang mengimplementasikan interface runnable, kamu harus membuat objek bertipe Thread dalam objek dari kelas itu. Berikut adalah konstruktor dari Thread :


Thread (Runnable threadObjek);

Dalam konstruktor diatas, threadObjek adalah sebuah instance dari kelas yang mengimplementasikan interface Runnable. Sampai sini, untuk memulai menjalankan program dengan multitasking, kita gunakan perintah method start() objek yang bertipe Thread. Secara otomatis saat memanggil method start() maka mengeksekusi method dari run().

Banyak omong yach,,langsung aja kita coba program sederhananya.

public class MyThread implements Runnable{
    int count;
    String thName;

    public MyThread(String Name) {
        count = 0;
        thName = Name;
    }

    public void run(){
        System.out.println(thName +" dimulai");
        try{
            do{
                Thread.sleep(500);
                System.out.println("Dalam " +thName+", jumlah count : "+count);
                count++;
            }while(count < 10);
        }catch(InterruptedException e){
            System.out.println(thName+ " Penghentian sementara&quot;);
        }
        System.out.println(thName+"Selesai");
    }
}

public class DemoThreading {
    public static void main(String args[]){
        System.out.println("Program utama dijalankan!!");

        MyThread mt = new MyThread("ThreadLearing");

        Thread th = new Thread(mt);

        th.start();

        do{
            System.out.print("@");
            try{
                Thread.sleep(1000);
            }catch(InterruptedException e){
                System.out.println("Program utama dihentikan sementara");
            }
        }while(mt.count != 10);
        System.out.println("Program utama selesai!!!");
    }
}

Keluaran dari program diatas :

Program utama dijalankan!!
@ThreadLearing dimulai
Dalam ThreadLearing, jumlah count : 0
Dalam ThreadLearing, jumlah count : 1
@Dalam ThreadLearing, jumlah count : 2
@Dalam ThreadLearing, jumlah count : 3
Dalam ThreadLearing, jumlah count : 4
@Dalam ThreadLearing, jumlah count : 5
Dalam ThreadLearing, jumlah count : 6
@Dalam ThreadLearing, jumlah count : 7
Dalam ThreadLearing, jumlah count : 8
@Dalam ThreadLearing, jumlah count : 9
ThreadLearing Selesai
Program utama selesai!!!

Keluaran diatas tidak bersifat tetap, karena tiap processor memiliki kecepatan berbeda-beda.

Saat program utama dipanggil dan menjalankan perintah

th.start();

maka secara otomatis memanggil method run() pada kelas MyThread yang mengimplementasikan interface runnable. Lalu pada program utama melanjutkan kegiata looping sambil melakukan kegiatan yang ada pada method run().

Method sleep() adalah menghentikan beberapa milidetik program lalu melanjutkan secara otomatis setelah mencapai beberapa milidetik tersebut.

Itulah sebabnya keluaran tampilan “@” nya belang-bolong, karena method sleep() pada kelas DemoThreading lebih besar daripada method sleep yang ada di kelas MyThread.

Sampai perulangan mencapai < 10 maka dihentikan.

Semoga jelas yach dan moga bermanfaat.

About these ads

8 gagasan untuk “Penggunaan Multithreading di Java

  1. wah..ini nih yg paling riet alias ribet klo ditiap pmrograman..
    multithreading, pa lagi buat spa syncronize..:(

    btw, slam knal mas ^^
    mudh2 next bisa sharing2..:)

  2. to MuhammadSawal : salam kenal juga mas,,ribet tapi paling berguna banget ya tuk program…kalo tanpa multithreading, mungkin program kita jadi butut alias lambat..tapi emank pas saya coba pahami,,ribet juga..hehe..

  3. Ping-balik: Penggunaan Multithreading di Java | ILMU TEKNOLOGI INFORMASI

  4. mas admin mau tanya dong. bisa gak kalo java yang udah di compiler terus dijalanin di command prompt terus keluar nya itu per huruf jadi ada jeda waktu keluarnya gt.
    jadi ada beberapa kalimat. terus keluar nya perhuruf gt ada jeda nya. nah tuh gimana dong cara nya?

  5. salam kenal agan Adiputra.
    ana mau tanya:
    1. kenapa pake Thread.sleep() baik di class main maupun di class Thread?, apakah harus?
    2. Thread.sleep() sama sleep() bedanya apa gan?

    Thanks gan. :)

Silahkan Komentar...

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

WordPress.com Logo

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

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s