Tuesday, December 22, 2015

Contoh Thread pada Java

Contoh Thread pada Java - multithreading
Pemrograman Parallel
Contoh Thread pada Java - multithreading


Pada bahasa pemrograman Java terdapat kemampuan multithreading. Adanya multithreading membuat program bisa menjalankan beberapa proses secara bersamaan/dalam waktu yang hampir bersamaan. Karena itu, waktu eksekusi proses tersebut menjadi lebih efisien.

Kita langsung pada contoh:
Kasusnya akan memperpanjang SIM dimana terdapat 2 proses SIM A dan SIM C dengan petugas polisi 2 orang. Kita anggap proses ke-1 yaitu SIM A dan proses ke-2 adalah SIM C.
Ketika tidak menggunakan multithreading, program akan menjalankan proses ke-1 terlebih dahulu. Sedangkan proses ke-2 akan di jalankan setelah proses ke-1 selesai.

Contoh Coding Thread pada Java

package SIM;

import java.util.logging.Level;
import java.util.logging.Logger;

public class SIM extends Thread{
    private String polisi;
    
    SIM(String polisi ){
        this.polisi = polisi;
    }

    public void run() {   
        for(int i = 1; i <= 10; i++){
            try {
                System.out.println(this.polisi + i);
                System.out.println("SIM orang antrian ke : " + i + " sudah diperpanjang.");                
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
                Logger.getLogger(SIM.class.getName()).log(Level.SEVERE, null, ex);
            }            
        }
    }
        
    public static void main(String[] args) throws InterruptedException {
        SIM t1 = new SIM("Polisi 1 Memperpanjang SIM A orang ke :");
        t1.run();
        
        SIM t2 = new SIM("Polisi 2 Memperpanjang SIM C orang ke :");
        t2.run();        
    }
}

Pada contoh coding Thread pada Java di atas, ketika di jalankan maka akan menampilkan hasil seperti di bawah ini:

run:
Polisi 1 Memperpanjang SIM A orang ke :1
SIM orang antrian ke : 1 sudah diperpanjang.
Polisi 1 Memperpanjang SIM A orang ke :2
SIM orang antrian ke : 2 sudah diperpanjang.
Polisi 1 Memperpanjang SIM A orang ke :3
SIM orang antrian ke : 3 sudah diperpanjang.
Polisi 1 Memperpanjang SIM A orang ke :4
SIM orang antrian ke : 4 sudah diperpanjang.
Polisi 1 Memperpanjang SIM A orang ke :5
SIM orang antrian ke : 5 sudah diperpanjang.
Polisi 1 Memperpanjang SIM A orang ke :6
SIM orang antrian ke : 6 sudah diperpanjang.
Polisi 1 Memperpanjang SIM A orang ke :7
SIM orang antrian ke : 7 sudah diperpanjang.
Polisi 1 Memperpanjang SIM A orang ke :8
SIM orang antrian ke : 8 sudah diperpanjang.
Polisi 1 Memperpanjang SIM A orang ke :9
SIM orang antrian ke : 9 sudah diperpanjang.
Polisi 1 Memperpanjang SIM A orang ke :10
SIM orang antrian ke : 10 sudah diperpanjang.
Polisi 2 Memperpanjang SIM C orang ke :1
SIM orang antrian ke : 1 sudah diperpanjang.
Polisi 2 Memperpanjang SIM C orang ke :2
SIM orang antrian ke : 2 sudah diperpanjang.
Polisi 2 Memperpanjang SIM C orang ke :3
SIM orang antrian ke : 3 sudah diperpanjang.
Polisi 2 Memperpanjang SIM C orang ke :4
SIM orang antrian ke : 4 sudah diperpanjang.
Polisi 2 Memperpanjang SIM C orang ke :5
SIM orang antrian ke : 5 sudah diperpanjang.
Polisi 2 Memperpanjang SIM C orang ke :6
SIM orang antrian ke : 6 sudah diperpanjang.
Polisi 2 Memperpanjang SIM C orang ke :7
SIM orang antrian ke : 7 sudah diperpanjang.
Polisi 2 Memperpanjang SIM C orang ke :8
SIM orang antrian ke : 8 sudah diperpanjang.
Polisi 2 Memperpanjang SIM C orang ke :9
SIM orang antrian ke : 9 sudah diperpanjang.
Polisi 2 Memperpanjang SIM C orang ke :10
SIM orang antrian ke : 10 sudah diperpanjang.
BUILD SUCCESSFUL (total time: 20 seconds)

Nah, hasil di atas merupakan implementasi jika tidak memanfaatkan multithreading. Lalu, gimana caranya agar bisa multithreading? Caranya, ganti t1.run() menjadi t1.start() dan t2.run() menjadi t2.start().

Penjelasan singkat, class SIM meng-extends class Thread, dimana kelas Thread memiliki kelebihan untuk melakukan multithreading.

Sedangkan method run() adalah method yang harus kita sediakan jika ingin menggunakan class ini sebagai sebuah thread terpisah dari thread induknya.

Untuk menjalankan sebuah class sebagai thread terpisah, selain harus meng-override method run() tersebut, class juga harus dieksekusi dengan method start().

Kode lengkap setelah diganti terlihat seperti di bwah ini:

package SIM;

import java.util.logging.Level;
import java.util.logging.Logger;

public class SIM extends Thread{
    private String polisi;
    
    SIM(String polisi ){
        this.polisi = polisi;
    }

    public void run() {   
        for(int i = 1; i <= 10; i++){
            try {
                System.out.println(this.polisi + i);
                System.out.println("SIM orang antrian ke : " + i + " sudah diperpanjang.");                
                Thread.sleep(1000);
            } catch (InterruptedException ex) {
                Logger.getLogger(SIM.class.getName()).log(Level.SEVERE, null, ex);
            }            
        }
    }
        
    public static void main(String[] args) throws InterruptedException {
        SIM t1 = new SIM("Polisi 1 Memperpanjang SIM A orang ke :");
        t1.start();
        
        SIM t2 = new SIM("Polisi 2 Memperpanjang SIM C orang ke :");
        t2.start();        
    }
}


Semoga Contoh Thread pada Java di atas bermanfaat bagi kita. Happy Coding!
Terima kasih telah mengunjungi blog saya.

Source: kurungkurawal [Edited Code]

java | multithreading | thread | shared memory | multiprocessor | thread java | parallel programming | pemrograman parallel
Load disqus comments

0 comments