Transcript
Page 1: Pemrograman Berorientasi Objek

Pemrograman Berorientasi Objek

Multi threading

Page 2: Pemrograman Berorientasi Objek

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

Page 3: Pemrograman Berorientasi Objek

Multithreading

Sebuah program

Thread 2

Thread 1

Thread 3

Daur hidup sebuah thread

waktu

Page 4: Pemrograman Berorientasi Objek

Thread dengan menggunakan kelas thread Thread melalui Runnable

Penanganan Thread

Page 5: Pemrograman Berorientasi Objek

Cara ini dgn memperluas kelas thread dan menuliskan kembali kode pada metode run().

Bentuk :class namakelas extends Thread{

public void run(){…}

}

Menggunakan kelas Thread

Page 6: Pemrograman Berorientasi Objek

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

Page 7: Pemrograman Berorientasi Objek

//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

Page 8: Pemrograman Berorientasi Objek

Keterangan :

Mobil m1 = new Mobil(“M-1”)m1.start();

class Mobil extends Thread{

…public void run() {

}

Page 9: Pemrograman Berorientasi Objek

Hasil :

Page 10: Pemrograman Berorientasi Objek

Runnable sesungguhnya adalah sebuah interface.

Dengan mengimplementasikan interface ini, sebuah kelas yg menangani thread dapat diciptakan.

Thread melalui Runnable

Page 11: Pemrograman Berorientasi Objek

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

Page 12: Pemrograman Berorientasi Objek

class Mobil implements Runnable{String nama;

//konstruktorpublic Mobil(String id) {

nama=id;}

Contoh : Ujithread2.java

Page 13: Pemrograman Berorientasi Objek

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

Page 14: Pemrograman Berorientasi Objek

Hasil :

Page 15: Pemrograman Berorientasi Objek

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

Page 16: Pemrograman Berorientasi Objek

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

Page 17: Pemrograman Berorientasi Objek

// 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

Page 18: Pemrograman Berorientasi Objek

// cek keberadaan thread m2 if (!m2Berakhir && !m2.isAlive()) {

m2Berakhir = true;System.out.println("Thread m2

berakhir"); }}while (!m1Berakhir || !m2Berakhir);

Contoh : Ujithread3.java

Page 19: Pemrograman Berorientasi Objek

//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

Page 20: Pemrograman Berorientasi Objek

Hasil :

Page 21: Pemrograman Berorientasi Objek

Sinkronisasi merupakan suatu upaya agar kode tertentu dijalankan secara berurutan dengan jaminan kode tersebut tdk akan dijalankan oleh yg lain dlm waktu bersamaan.

Sinkronisasi

Page 22: Pemrograman Berorientasi Objek

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

Page 23: Pemrograman Berorientasi Objek

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

Page 24: Pemrograman Berorientasi Objek

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

Page 25: Pemrograman Berorientasi Objek

Hasil :


Top Related