Pemrograman Berorientasi Objek Multi threading MULTITHREADING Multithreading adalah
Pemrograman Berorientasi Objek Multi threading
MULTITHREADING � 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 Sebuah program Thread 1 Thread 2 Thread 3 Daur hidup sebuah thread waktu
Penanganan Thread � Thread dengan menggunakan kelas thread � Thread melalui Runnable
Menggunakan kelas Thread � Cara ini dgn memperluas kelas thread dan menuliskan kembali kode pada metode run(). � Bentuk : class namakelas extends Thread{ public void run(){ … } }
Contoh : Ujithread. java public class Ujithread{ public static void main(String[] args){ Mobil m 1 = new Mobil("M-1"); Mobil m 2 = new Mobil("M-2"); } m 1. start(); m 2. start(); } class Mobil extends Thread{ //konstruktor public Mobil(String id){ super(id); }
Contoh : Ujithread. java } //mendefinisikan sendiri run() public void run() { String nama = get. Name(); for (int i=0; i<5; i++) { try{ sleep(1000); //tunggu 1 detik } catch(Interrupted. Exception ie){ System. out. println("terinterupsi"); } System. out. println("Thread " + nama + " : Posisi " + i); } }
Keterangan : Mobil m 1 = new Mobil(“M-1”) m 1. start(); class Mobil extends Thread{ … public void run() { }
Hasil :
Thread melalui Runnable � Runnable interface. sesungguhnya adalah sebuah mengimplementasikan interface ini, sebuah kelas yg menangani thread dapat diciptakan. � Dengan
Contoh : Ujithread 2. java public class Ujithread 2 { public static void main(String[] args){ Thread m 1 = new Thread(new Mobil("M-1")); Thread m 2 = new Thread(new Mobil("M-2")); } } m 1. start(); m 2. start();
Contoh : Ujithread 2. java class Mobil implements Runnable{ String nama; //konstruktor public Mobil(String id) { nama=id; }
Contoh : Ujithread 2. java public void run() { for(int i=0; i<5; i++) { try{ Thread. current. Thread(). sleep(1000); } catch(Interrupted. Exception ie){ System. out. println("terinterupsi"); cr } System. out. println("Thread " + nama + " : Posisi " + i); } } }
Hasil :
Daur hidup Thread � Sebuah Thread terus dieksekusi sampai salah satu kondisi berikut terjadi : 1. Eksekusi terhadap run() berakhir 2. Terinterupsi oleh eksepsi yg tidak tertangkap 3. Metode stop() dipanggil
Contoh : Ujithread 3. java public class Ujithread{ public static void main(String[] args){ Mobil m 1 = new Mobil("M-1"); Mobil m 2 = new Mobil("M-2"); } m 1. start(); m 2. start(); } class Mobil extends Thread{ //konstruktor public Mobil(String id){ super(id); }
Contoh : Ujithread 3. java // beri komentar ketika thread berakhir boolean m 1 Berakhir = false; boolean m 2 Berakhir = false; do{ //cek keberadaan thread m 1 if (!m 1 Berakhir && !m 1. is. Alive()) { m 1 Berakhir = true; System. out. println("Thread m 1 berakhir"); }
Contoh : Ujithread 3. java // cek keberadaan thread m 2 if (!m 2 Berakhir && !m 2. is. Alive()) { m 2 Berakhir = true; System. out. println("Thread m 2 berakhir"); } }while (!m 1 Berakhir || !m 2 Berakhir);
Contoh : Ujithread 3. java } //mendefinisikan sendiri run() public void run() { String nama = get. Name(); for (int i=0; i<5; i++) { try{ sleep(1000); //tunggu 1 detik } catch(Interrupted. Exception ie){ System. out. println("terinterupsi"); } System. out. println("Thread " + nama + " : Posisi " + i); } }
Hasil :
Sinkronisasi � Sinkronisasi merupakan suatu upaya agar kode tertentu dijalankan secara berurutan dengan jaminan kode tersebut tdk akan dijalankan oleh yg lain dlm waktu bersamaan.
Contoh : Ujithread 4. java public class Ujithread 4{ public static void main(String[] args){ Mobil m 1 = new Mobil("M-1"); Mobil m 2 = new Mobil("M-2"); } } m 1. start(); m 2. start();
Contoh : Ujithread 4. java class Mobil extends Thread{ //konstruktor public Mobil(String id){ super(id); } } //mendefinisikan sendiri run() public void run() { String nama = get. Name(); Sinkronisasi. Keluaran. info(nama); }
Contoh : Ujithread 4. java class Sinkronisasi. Keluaran{ public static synchronized void info(String nama){ for (int i=0; i<5; i++) { try{ Thread. sleep(1000); //tunggu 1 detik } catch(Interrupted. Exception ie){ System. out. println("terinterupsi"); } System. out. println("Thread " + nama + " : Posisi " + i); } } }
Hasil :
- Slides: 25