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