Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Multithreading As’ad Djamalilleil

Presentasi serupa


Presentasi berjudul: "Multithreading As’ad Djamalilleil"— Transcript presentasi:

1 Multithreading As’ad Djamalilleil

2 Thread Thread  bagian dari proses Multithread  proses yang memiliki lebih dari satu thread Sebuah program multithread dapat menangani beberapa tugas pada saat yang sama secara konkuren/paralel Sehingga penggunaan sumber daya menjadi lebih optimal

3 Kapan multithread digunakan Menjalankan proses yg panjang Efisiensi sumber daya

4 Siklus Hidup dari sebuah Thread

5 Tahap Hidup Thread New  Sebuah thread baru memulai siklus hidupnya. Tetap dalam kondisi ini sampai thread dimulai. Runnable  Setelah dimulai, thread dapat dijalankan. Thread siap mengeksekusi tugasnya. Waiting  Thread menunggu thread lain mengeksekusui tugasnya. Akan kembali ke status runnable hanya bila thread lai mengirim sinyal ke thread yang menunggu untuk melanjutkan eksekusi. Timed waiting  Sebuah thread yg runnable masuk waktu tunggu selama periode tertentu. Akan kembali ke status runnable setelah interval waktunya tercapai atau event yg ditunggu terjadi Terminated  Thread runnable dihentikan bila tugasnya selesai atau dihentikan

6 Prioritas Thread Prioritas thread berguna bagi SO untuk penjadwalan/urutan pelaksanaan thread Prioritas thread dari: –MIN_PRIORITY (angka konstan 1) –MAX_PRIORITY (angka konstan 10) –Default: NORM_PRIORITY (angka konstan 5) Thread dengan prioritas lebih tinggi dianggap lebih penting untuk dieksekusi (tetap bergantung dari kebijakan penjadwalan SO)

7 Langkah Membuat Thread Cara pertama dengan meng- implement interface Runnable

8 Langkah 1 Implement method run() yang ada pada interface Runnable Method ini menyediakan titik awal bagi thread dan sebagai tempat utama untuk menuliskan proses apa yang akan dijalankan oleh thread Sintaksnya sbb: public void run( )

9 Langkah 2 Membuat object dari class Thread dengan konstruktor sbb: Thread(Runnable objThr, String namaThr); objThr  objek dari class yang mengimplement interface Runnable namaThr  nama dari thread yang dibuat

10 Langkah 3 Sekali objek Thread dibuat, maka dapat dijalankan dengan memanggil method start() Method start() akan memanggil method run() Sintaksnya sbb: void start( );

11 Contoh 1 class RunnableDemo implements Runnable { private Thread t; private String threadName; RunnableDemo(String name){ threadName = name; System.out.println("Creating " + threadName ); } public void run() { System.out.println("Running " + threadName ); try { for(int i = 4; i > 0; i--) { System.out.println("Thread: " + threadName + ", " + i); Thread.sleep(50); } catch (InterruptedException e) { System.out.println("Thread " + threadName + " interrupted."); } System.out.println("Thread " + threadName + " exiting."); }

12 public void start () { System.out.println("Starting " + threadName ); if (t == null){ t = new Thread (this, threadName); t.start (); } public class TestThread { public static void main(String args[]) { RunnableDemo R1 = new RunnableDemo( "Thread-1"); R1.start(); RunnableDemo R2 = new RunnableDemo( "Thread-2"); R2.start(); }

13 Langkah Membuat Thread Cara kedua dengan membuat turunan class Thread

14 Langkah 1 Override method run() pada class Thread public void run( )

15 Langkah 2 Setelah objek Thread dibuat, maka thread tersebut dapat dijalankan dengan memanggil method start() yang menjalankan method run() void start( );

16 Contoh 2 class ThreadDemo extends Thread { private Thread t; private String threadName; ThreadDemo( String name){ threadName = name; System.out.println("Creating " + threadName ); } public void run() { System.out.println("Running " + threadName ); try { for(int i = 4; i > 0; i--) { System.out.println("Thread: " + threadName + ", " + i); Thread.sleep(50); } }catch (InterruptedException e) { System.out.println("Thread " + threadName + " interrupted."); } System.out.println("Thread " + threadName + " exiting."); }

17 public void start (){ System.out.println("Starting " + threadName ); if (t == null) { t = new Thread (this, threadName); t.start (); } public class TestThread { public static void main(String args[]) { ThreadDemo T1 = new ThreadDemo( "Thread-1"); T1.start(); ThreadDemo T2 = new ThreadDemo( "Thread-2"); T2.start(); }

18 Method pada class Thread MethodKeterangan public void start()Memulai thread dan menjalankan method run() pada object Thread tersebut public void run()Jika objek Thread ini dibuat menggunakan target Runnable yang terpisah, maka method run() dijalankan pada objek Runnable tersebut public final void setName(String name) Menggnti nama dari objek Thread. Ada pula method getName() untuk mendapatkan nama objek tersebut public final void setPriority(int priority) Memberikan prioritas pada objek Thrad ini. Dapat bernilai 1 s/d 10 public final void setDaemon(boolean on) Parameter bernilai true menandakan bahwa Thread ini merupakan sebuah thread Daemon public final void join(long millisec) Thread yang menjalankan method ini pada thread kedua, menyebabkan thread pertama tadi tertunda sampai thread kedua berhenti atau interval waktu tertentu tercapai public void interrupt()Menginterupsi thread, menyebabkan thread tersebut melanjutkan eksekusi bila tertunda karena alasan tertentu public final boolean isAlive() Memberikan nilai true jika thread masih aktif (mulai dijalankan sampai selesai)

19 public static void yield()Menyebabkan thread yang sedang berjalan mengalah pada thread lain dengan prioritas sama yang sedang menunggu untuk dijadwalkan public static void sleep(long millisec) Menunda thread yang sedang berjalan selama beberapa milidetik public static boolean holdsLock(Object x) Bernilai true jika thread tersebut memegang kunci pada objek yang diberikan public static Thread currentThread() Memberikan referensi pada thread yang sedang berjalan, dimana merupakan thread yang menjalankan method ini public static void dumpStack() Mencetak stack trace dari thread yang sedang berjalan, berguna untuk proses debugging pada aplikasi multithread

20 Contoh 3 // File Name : DisplayMessage.java // Create a thread to implement Runnable public class DisplayMessage implements Runnable{ private String message; public DisplayMessage(String message){ this.message = message; } public void run(){ while(true){ System.out.println(message); }

21 // File Name : GuessANumber.java // Create a thread to extentd Thread public class GuessANumber extends Thread{ private int number; public GuessANumber(int number){ this.number = number; } public void run(){ int counter = 0; int guess = 0; do{ guess = (int) (Math.random() * ); System.out.println(this.getName() + " guesses " + guess); counter++; }while(guess != number); System.out.println("** Correct! " + this.getName() + " in " + counter + " guesses.**"); }

22 // File Name : ThreadClassDemo.java public class ThreadClassDemo{ public static void main(String [] args){ Runnable hello = new DisplayMessage("Hello"); Thread thread1 = new Thread(hello); thread1.setDaemon(true); thread1.setName("hello"); System.out.println("Starting hello thread..."); thread1.start(); Runnable bye = new DisplayMessage("Goodbye"); Thread thread2 = new Thread(bye); thread2.setPriority(Thread.MIN_PRIORITY); thread2.setDaemon(true); System.out.println("Starting goodbye thread..."); thread2.start(); System.out.println("Starting thread3..."); Thread thread3 = new GuessANumber(27); thread3.start();

23 try{ thread3.join(); }catch(InterruptedException e){ System.out.println("Thread interrupted."); } System.out.println("Starting thread4..."); Thread thread4 = new GuessANumber(75); thread4.start(); System.out.println("main() is ending..."); }


Download ppt "Multithreading As’ad Djamalilleil"

Presentasi serupa


Iklan oleh Google