JAva Threads.

Slides:



Advertisements
Presentasi serupa
Pemrograman Berorientasi Objek
Advertisements

Pemrograman Berorientasi Objek
Try, Catch, Finally Throws
Membuat class sendiri.
Abstract Class & Interface
Pemrograman JAVA (TIB09)
Workshop SCS: Java Game Programming
Pemrograman Berorientasi Objek
Inheritance Ery Setiyawan Jullev A.
Inheritance (Pewarisan)
Pemrograman Berbasis Obyek
Thread.
Encapsulation, Inheritance, polymorphism, dan interface
Pemrograman Berorientasi Obyek Oleh Tita Karlita
Thread.
Pertemuan : Object Oriented Programming
OBJECT ORIENTED PROGRAMMING YANES HARDIANTO SUI Politeknik Manufaktur Astra 2011.
07 Advanced Class Features
NAMA : JUMADI Npm : Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class. Mereka menyediakan.
Sistem Operasi (Operating Systems) Minggu 4
Inheritance, polymorphism, dan interface
Kelas Lanjut 2 Oleh Tita Karlita.
INHERITANCE (Oleh : Nur Hayatin, S.ST)
Exceptional Pendahuluan Bugs dan error dalam sebuah program sangat sering muncul meskipun program tersebut dibuat oleh programmer berkemampuan tinggi.
METHOD, ARRAY DAN STRING
OOP Java Minggu 2b Dasar OOP. Class (1) Deklarasi class : [ *] class { [ *] } Cat : [] = optional, * = repeat 0-N.
MATERI IV OOP (Object Oriented Programming) Chapter II.
Try, Catch, Finally Throws
Pertemuan 6 PEWARISAN AND POLYMORPHISM
Command line argument.
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
MATAKULIAH SISTEM OPERASI – PENDIDIKAN TEKNIK INFORMATIKA 2008
Deadlock.
Access Modifier.
Inheritance dan Kata Kunci static
Proses dan Thread Oleh : Adhitya Nugraha.
Deadlock.
Pemprograman Berorientasi Objek
Algoritma & Pemrograman 1
Constructor dan Overloading
MODIFIER JAVA.
MENGENAL KEYWORD this, static, final
Collection & Threads.
Command line argument.
Constructor overloading
THREAD Pertemuan 9.
KELAS DAN OBJEK BAGIAN I Pertemuan 6.
MEMBUAT CLASS SENDIRI 2.
THREAD Imam Solikin, M.Kom.
Tipe Data, Variabel, dan Operator
As’ad Djamalilleil Multithreading As’ad Djamalilleil
Tipe Data, Variabel, dan Operator
THREAD.
Pemrograman Berorientasi Objek 1
Manajemen Proses Firdaus, M.T..
MENGENAL KEYWORD this, static, final
Hendy Mizuardy SISTEM OPERASI. MANAJEMEN PROSES Konsep Proses Definisi Proses Status Proses Process Control Block (PCB) Konsep Penjadwalan Queue Scheduling.
Pemrograman Berorientasi Object
Dasar-Dasar Pemrograman
Pemrograman Berorientasi Object
Tipe Data, Variabel, dan Operator
5 Thread.
Proses dan Thread Oleh : Adhitya Nugraha.
- PERTEMUAN 2- CONSTRUCTOR
Sinkronisasi Pertemuan ke-11.
Multithreading Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 12 Tahun : 2008 Versi : 1/0.
Pemrograman berorientasi objek
DPH1C4 Pemrograman berorientasi Obyek
Transcript presentasi:

JAva Threads

Konsep Thread Thread merupakan unit eksekusi individual dan independen yang merupakan bagian dari proses Multiple thread dapat bekerja sama untuk menyelesaikan satu tugas tertentu Java menyediakan built-in support untuk multithreading

Konsep thread a) Multiple thread pada multiple CPU b) Multiple thread pada single CPU

Manfaat Mudah untuk diprogram - 1 thread per task Dapat memberikan performa yang lebih baik - Thread dijalankan hanya bila dibutuhkan Multiple thread dapat berbagi resource Mengutilisasi multi prosessor jika tersedia

Kelemahan Desain sistem menggunakan multiple thread yang kurang baik dapat menimbulkan deadlock Overhead dalam melakukan switching diantara thread

Impelementasi thread Extending Class Thread - harus menggunakan method run() - thread berakhir ketika method run() selesai dieksekusi - panggil start() untuk memulai menjalankan thread Implement runnable interface - Interface runnable harus di implemented oleh class yang instancenya akan dieksekusi oleh thread. Class harus mendefinisikan method run() - memanggil konstruktor thread dengan instance dari runnable

Extending Thread Class class MyThread extends Thread { private String name; public MyThread(String name) { this.name = name; } public void run() { for (;;) { System.out.println(name + ": hello world"); public class Main2 { public static void main(String [] args) { MyThread t1 = new MyThread("thread1"); MyThread t2 = new MyThread("thread2"); t1.start(); t2.start();

output thread2: hello world thread1: hello world Output bervariasi pada run time, hal ini disebut race condition (dianggap bug pada program) See the variation in output.

Implement Runnable class Output implements Runnable { private String toSay; public Output(String st) { toSay = st; } public void run() { try { for(;;) { System.out.println(toSay); Thread.sleep(1000); } catch(InterruptedException e) { System.out.println(e); class Program { public static void main(String [] args) { Output out1 = new Output(“Hello”); Output out2 = new Output(“There”); Thread thr1 = new Thread(out1); Thread thr2 = new Thread(out2); thr1.start(); thr2.start();

Java Thread Control _.start(): Memulai eksekusi thread wait() and notify(): Untuk sinkronisasi _.stop(): kills spesifik thread(deprecated) _.suspend() and resume(): deprecated _.join(): menunggu thread spesifik selesai dieksekusi _.setPriority(): 0 to 10 (MIN_PRIORITY to MAX_PRIORITY); 5 is default (NORM_PRIORITY)

Join Example

… hello world1 Thread is done! output

Java thread scheduling Thread prioritas tertinggi dijalankan - jika lebih dari satu, arbitrary yield(); thread berjalan melepaskan cpu agar proses lain dengan prioritas yang sama bisa berjalan Sleep(ms): stop eksekusi untuk waktu yang ditentukan - thread prioritas rendah dapat berjalan

class MyThread extends Thread { private String name; public MyThread(String name) { this.name = name; } public void run() { for (;;) { System.out.println(name + ": hello world"); yield(); public class Main3 { public static void main(String [] args) { MyThread t1 = new MyThread("thread1"); MyThread t2 = new MyThread("thread2"); t1.start(); t2.start();

Output thread1: hello world thread2: hello world Run on Mac OS X, 3/14/08

Java thread state new: thread diciptakan tapi belum berjalan runnable: thread telah diciptakan dan dimulai, telah dapat dijalankan blocked: telah diciptakan dan dimulau tapi tidak dapat berjalan sebab dalam keadaan menunggu suatu event terjadi dead: thread selesai dieksekusi atau dihentikan

States of Java Threads runnable new dead blocked stop(), end of run method start() runnable new dead wait(), I/O request, suspend() notify(), I/O completion, resume() blocked

Basic Tools untuk Synchronization dalam java Metode sinkronisasi Objek sinkronisasi Methods wait notify notifyAll

Synchronized Methods: Monitors Menggunakan synchronized keyword pada method Cth., public synchronized void SetValue() { // Update instance data structure. // ketika thread dieksekusi disini, akan secara eksklusif memiliki monitor lock } Menyediakan mekanisme mutual exclusion Kunci secara implisit disediakan- mengijinkan paling banyak satu thread yang mengakses satu method pada satu waktu Digunakan per method, tidak semua method dalam class otomatis menggunakan metode ini

Example Construct a queue (FIFO) data structure that can be used by two threads to access the queue data in a synchronized manner Producer thread: Adds data into queue Consumer thread: Removes data from queu For one instance of the queue, only one thread should be able to modify the queue, i.e., we should have mutual exclusion on methods of one instance of the queue

Point out that this is a polling solution– should really make the consumer block to wait for the queue to be non-empty

Output

Error

Hal ini merupakan salah satu masalah race condition Masalah pada implementasi ini, consumer memprint hasil kelayar sehingga melambatkannya dengan signifikan dibanding proses produser yang lebih cepat, akhirnya proses produser akan memenuhi queue, dan menyebabkan ruang heap terpakai habis Hal ini merupakan salah satu masalah race condition Hasil bergantung dari kecepatan dari proses Solusi: memblok proses produser (wait) ketika queue sudah mencapai batas tertentu

Bahan lanjut Networking