Download - Pemrograman Berorientasi Objek
Pemrograman Berorientasi Objek
Multi threading
Multithreading adalah kemampuan yg memungkinkan kumpulan instruksi atau proses dpt dijalankan secara bersamaan dlm sebuah program.
Thread adalah satu kumpulan instruksi yg akan dieksekusi secara independen
Kegunaan thread pada permainan( game) dan web browser
MULTITHREADING
Multithreading
Sebuah program
Thread 2
Thread 1
Thread 3
Daur hidup sebuah thread
waktu
Thread dengan menggunakan kelas thread Thread melalui Runnable
Penanganan Thread
Cara ini dgn memperluas kelas thread dan menuliskan kembali kode pada metode run().
Bentuk :class namakelas extends Thread{
public void run(){…}
}
Menggunakan kelas Thread
public class Ujithread{public static void main(String[] args){
Mobil m1 = new Mobil("M-1");Mobil m2 = new Mobil("M-2");
m1.start();m2.start();
}}class Mobil extends Thread{
//konstruktorpublic Mobil(String id){
super(id);}
Contoh : Ujithread.java
//mendefinisikan sendiri run()public void run() {String nama = getName();for (int i=0; i<5; i++) {try{sleep(1000); //tunggu 1 detik}catch(InterruptedException ie){System.out.println("terinterupsi");}System.out.println("Thread " + nama + " :Posisi " + i);}}
}
Contoh : Ujithread.java
Keterangan :
Mobil m1 = new Mobil(“M-1”)m1.start();
class Mobil extends Thread{
…public void run() {
}
Hasil :
Runnable sesungguhnya adalah sebuah interface.
Dengan mengimplementasikan interface ini, sebuah kelas yg menangani thread dapat diciptakan.
Thread melalui Runnable
public class Ujithread2 {public static void main(String[] args){
Thread m1 = new Thread(new Mobil("M-1"));
Thread m2 = new Thread(new Mobil("M-2"));
m1.start();m2.start();
}}
Contoh : Ujithread2.java
class Mobil implements Runnable{String nama;
//konstruktorpublic Mobil(String id) {
nama=id;}
Contoh : Ujithread2.java
public void run() {for(int i=0; i<5; i++) {try{Thread.currentThread().sleep(1000);}catch(InterruptedException ie){System.out.println("terinterupsi");cr}System.out.println("Thread " + nama + " :Posisi " + i);}}
}
Contoh : Ujithread2.java
Hasil :
Sebuah Thread terus dieksekusi sampai salah satu kondisi berikut terjadi :
1.Eksekusi terhadap run() berakhir2.Terinterupsi oleh eksepsi yg tidak
tertangkap3.Metode stop() dipanggil
Daur hidup Thread
public class Ujithread{public static void main(String[] args){
Mobil m1 = new Mobil("M-1");Mobil m2 = new Mobil("M-2");
m1.start();m2.start();
}}class Mobil extends Thread{
//konstruktorpublic Mobil(String id){
super(id);}
Contoh : Ujithread3.java
// beri komentar ketika thread berakhirboolean m1Berakhir = false;boolean m2Berakhir = false;
do{ //cek keberadaan thread m1 if (!m1Berakhir && !m1.isAlive()) {
m1Berakhir = true;System.out.println("Thread m1 berakhir");
}
Contoh : Ujithread3.java
// cek keberadaan thread m2 if (!m2Berakhir && !m2.isAlive()) {
m2Berakhir = true;System.out.println("Thread m2
berakhir"); }}while (!m1Berakhir || !m2Berakhir);
Contoh : Ujithread3.java
//mendefinisikan sendiri run()public void run() {String nama = getName();for (int i=0; i<5; i++) {try{sleep(1000); //tunggu 1 detik}catch(InterruptedException ie){System.out.println("terinterupsi");}System.out.println("Thread " + nama + " :Posisi " + i);}}
}
Contoh : Ujithread3.java
Hasil :
Sinkronisasi merupakan suatu upaya agar kode tertentu dijalankan secara berurutan dengan jaminan kode tersebut tdk akan dijalankan oleh yg lain dlm waktu bersamaan.
Sinkronisasi
public class Ujithread4{public static void main(String[] args){
Mobil m1 = new Mobil("M-1");Mobil m2 = new Mobil("M-2");
m1.start();m2.start();
}}
Contoh : Ujithread4.java
class Mobil extends Thread{//konstruktorpublic Mobil(String id){super(id);}
//mendefinisikan sendiri run()public void run() {String nama = getName();SinkronisasiKeluaran.info(nama);}
}
Contoh : Ujithread4.java
class SinkronisasiKeluaran{public static synchronized void info(String nama){for (int i=0; i<5; i++) {try{Thread.sleep(1000); //tunggu 1 detik}catch(InterruptedException ie){System.out.println("terinterupsi");}System.out.println("Thread " + nama + " :Posisi " + i);}}
}
Contoh : Ujithread4.java
Hasil :