As’ad Djamalilleil http://kampusku.my.id asad.kom@gmail.com Multithreading As’ad Djamalilleil http://kampusku.my.id asad.kom@gmail.com.

Slides:



Advertisements
Presentasi serupa
EXCEPTION HANDLING.
Advertisements

Pemrograman Berorientasi Objek
Pemrograman Berorientasi Objek
Java Progamming Operasi I/O
Abstract Class & Interface
Pemrograman JAVA (TIB09)
Workshop SCS: Java Game Programming
Dasar Exception Handling
Singleton Pattern 1 one uno. What is Singleton ? One object of a kind Ada class yang hanya perlu diinstansiasi 1 kali saja Alasan: Dalam beberapa kasus.
Komponen Class Item (3) As’ad Djamalilleil
Modul 1- Review Java.
Inheritance Ery Setiyawan Jullev A.
Thread.
Encapsulation, Inheritance, polymorphism, dan interface
Pemrograman Berorientasi Objek 1
Pertemuan : Object Oriented Programming
Flow Control & Looping Pertemuan 4 Pemrograman Berbasis Obyek Oleh Tita Karlita.
Inheritance, polymorphism, dan interface
MATERI IV OOP (Object Oriented Programming) Chapter II.
Try, Catch, Finally Throws
Pertemuan 6 PEWARISAN AND POLYMORPHISM
Exception Handling (Penanganan Error)
Kelas A dapat memiliki referensi ke obyek dari kelas- kelas lain sebagai anggota. Kadang-kadang disebut sebagai hubungan “has-a”. Sebagai contoh, sebuah.
1 Pertemuan 10 PEMROGRAMAN MULTITHREADING Matakuliah: M0074/PROGRAMMING II Tahun: 2005 Versi: 1/0.
Multithreading As’ad Djamalilleil
Java Remote Object Invocation (RMI)
Struktur Kontrol Struktur kontrol if Struktur kontrol if-else
Pernyataan Pertemuan 3 Season 1
Access Modifier.
Inheritance dan Kata Kunci static
PBO Daniel Riano Kaparang, S.Kom., M.Cs
POLYMORPHISM (KEBANYAKRUPAAN)
Pertemuan 2 SINTAKS BAHASA, TIPE DATA, DAN OPERATOR
MODUL – II MEMBUAT PROGRAM SEDERHANA
Pemprograman Berorientasi Objek
Constructor dan Overloading
POLYMORPHISM (KEBANYAKRUPAAN)
Pertemuan 5 Tipe Data, Operator, Tata Bahasa
Penanganan Eksepsi Pertemuan Ke- 9.
Pengorganisasian Class
Pengambilan Keputusan dan Pengulangan Proses
PERCABANGAN & PERULANGAN DALAM JAVA
Algoritma & Pemrograman 1
Pengorganisasian Class
INTERFACE Pertemuan 005.
Algoritma & Pemrograman 1
Command line argument.
THREAD Pertemuan 9.
MEMBUAT CLASS SENDIRI 2.
Tipe Data, Variabel, dan Operator
As’ad Djamalilleil Elemen Dasar Java As’ad Djamalilleil
As’ad Djamalilleil Function (method) As’ad Djamalilleil
As’ad Djamalilleil Class dan Object As’ad Djamalilleil
Exception Handling (Penanganan Error)
As’ad Djamalilleil Abstract & Interface As’ad Djamalilleil
Review Materi Java Fundamental
Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator
Tipe Data, Variabel, dan Operator
MATERI PENDUKUNG PENGENALAN DASAR CLASS
PBO Lanjutan Membuat Kelas.
JAva Threads.
Pemrograman Berorientasi Objek 1
Dasar Bahasa Java.
Pemrograman Berorientasi Object
DIKTAT PBO Oleh: Adam Mukharil B. S.Kom. BAB IV – CLASS (2)
DIKTAT PBO Oleh: Adam Mukharil B. S.Kom. BAB III – CLASS (2)
Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator
Tipe Data, Variabel, dan Operator
Multithreading Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 12 Tahun : 2008 Versi : 1/0.
Pemrograman Berorientasi Objek
Transcript presentasi:

As’ad Djamalilleil http://kampusku.my.id asad.kom@gmail.com Multithreading As’ad Djamalilleil http://kampusku.my.id asad.kom@gmail.com

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

Kapan multithread digunakan Menjalankan proses yg panjang Efisiensi sumber daya

Siklus Hidup dari sebuah Thread

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

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)

Langkah Membuat Thread Cara pertama dengan meng-implement interface Runnable

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( )

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

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

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.");

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();

Langkah Membuat Thread Cara kedua dengan membuat turunan class Thread

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

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

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.");

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();

Method pada class Thread Keterangan 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)

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

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);

// 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() * 100 + 1); System.out.println(this.getName() + " guesses " + guess); counter++; }while(guess != number); System.out.println("** Correct! " + this.getName() + " in " + counter + " guesses.**");

// 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();

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...");