Showing posts with label JAVA. Show all posts
Showing posts with label JAVA. Show all posts

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
Selengkapnya...

Programming With Shared Memory / Pemrograman dengan memori bersama

Programming With Shared Memory / Pemrograman dengan memori bersama

Shared memory multiprocessor system (Sistem Multiprosesor Dengan Memori Bersama)
EN: any memory location is directly accessible by any processor (not via message passing)
ID: Setiap lokasi memori dapat diakses oleh prosesor manapun.

  • Sebuah Ruang alamat tunggal terjadi, ini berarti bahwa setiap lokasi memori diberikan alamat tunggal/unik diantara area tunggal suatu alamat.
  • Untuk sejumlah kecil prosesor, arsitektur umumnya adalah arsitektur bus tunggal :


Programming With Shared Memory - Single Bus Architecture
Programming With Shared Memory - Single Bus Architecture


Misalkan terdapat dua buah proses yang jika akan menjalankan program tersebut maka proses ke-2 akan menunggu hingga proses ke-1 selesai. Dengan adanya multithreading, maka kedua proses bisa berjalan secara bersamaan dan tanpa menunggu proses pertama selesai.

Materi Programming With Shared Memory / Pemrograman dengan memori bersama bisa Anda download pada link di bawah ini:
Link 1  : DOWNLOAD  (Indonesia)
Link 2  : DOWNLOAD  (English)


Kata kunci:
java | multithreading | thread | shared memory | multiprocessor | thread java | parallel programming | pemrograman parallel
Selengkapnya...