Pemrograman Multithreading Menggunakan Thread Java Armin Lawi Program











- Slides: 11
Pemrograman Multithreading Menggunakan Thread Java Armin Lawi Program Pascasarjana UNHAS
Apa itu thread • Alur kontrol yang melewati program • Thread (high-weight) Process ▫ Process mengalokasi memori ▫ Thread berbagi memori dengan thread lainnya (global memory dan local memory) ▫ Thread kadang disebut light-weight process • Multithreading: Program dengan lebih dari satu thread
Single threaded program class ABC { …. public void main(. . ) { …. . } } begin body end
Single- dan Multi-threaded Program Single-threaded program Multithreaded program Eksekusi Thread Single instruction stream Multiple instruction stream Ruang Address Bersama
Multithreaded Program Main Thread start Thread A start Thread B Thread dapat bertukar data/hasil Thread C
Mengapa Multithreading Penting Server Process Client 1 Process Server Threads Internet Client 2 Process
Membuat thread dalam Java • Membuat class yang meng-extend Thread • Membuat class yang tidak meng-extend Thread tetapi meng-implement Runnable interface
Contoh dengan extends Thread public class Thread. Sebut. Nama extends Thread { public static void main (String[] args) { Thread. Sebut. Nama thread 1, thread 2; thread 1 = new Thread. Sebut. Nama(); thread 2 = new Thread. Sebut. Nama(); thread 1. start(); //memanggil run thread 2. start(); // memanggil run } public void run () { int pause; for (int i=0; i<10; i++) { try { System. out. println(get. Name() + " sementara dieksekusi. "); pause = (int) (Math. random()*3000); sleep(pause); // 0 -3 detik } catch (Interrupted. Exception e) { System. out. println(e); } }}} Contoh dengan task yang sama!!
Contoh Lain • Contoh thread dengan task yang berbeda
Contoh dengan implements Runnable public class Runnable. Sebut. Nama implements Runnable { public static void main(String[] args) { Thread thread 1 = new Thread(new Runnable. Sebut. Nama()); Thread thread 2 = new Thread(new Runnable. Sebut. Nama()); thread 1. start(); thread 2. start(); } public void run() { int pause; for (int i=0; i<10; i++) { try { System. out. println(Thread. current. Thread(). get. Name() + " sedang dieksekusi. "); pause = (int)(Math. random() * 3000); Thread. sleep(pause); } catch (Interrupted. Exception e) { System. out. println(e); } }
Multithreaded server • Multi. Echo. Server • Multi. Echo. Client