Mengunci sebuah object: Untuk memastikan bahwa hanya satu thread yang mendapatkan hak akses kedalam method tertentu

dokumen-dokumen yang mirip
1.Tujuan. 2. Latar Belakang

Bab Tujuan. 9.2 Definisi dan dasar-dasar thread Definisi Thread

ILUSTRASI KLASIK: BOUNDED BUFFER

1. Latar Belakang Didalam pembuatan game java sering kali kita mendefinisikan banyak object seperti gambar, dan grafik geometri yang begitu banyak,

Thread. 16 th week Estu Sinduningrum ST,MT

Monitor. Process Synchronization. SISTIM OPERASI (IKI-20230) ProcessSynchronization Ch. 6. Johny Moningka

Pemrograman Berorientasi Obyek (IT251) Ramos Somya, S.Kom., M.Cs.

Java Progamming Multithreading

BAB 2 COLLECTION & THREAD

Pada pembuatan game di java, sering kali para programer. mendefinisikan banyak object seperti suara, gambar, dan grafik geometri yang

Bab 26. Readers/Writers

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

BAHASA PEMROGRAMAN JAVA

Abstract Class dan Interface. Viska Mutiawani, M.Sc

Network Programming 2010 Pemrograman Multi-Thread

Exception Handling and Multithreading

BAB II VARIABEL DAN TIPE DATA

2 TIPE DATA DAN VARIABEL

PENANGANAN EKSEPSI. class Exc0 { public static void main (String args[]) { int d = 0; int a = 42 / d; } }

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

PERTEMUAN VII Multithreaded Programming. Praktikan mampu membuat program sederhana mengenai threading

Pemrograman Berorientasi Object

IKG2I4 / Software Project I

PERTEMUAN 7 MULTITHREADED PROGRAMMING

IF PEMROGRAMAN LANJUT EXCEPTION. Oleh : Andri Heryandi, M.T.

Class Thread juga menyediakan beberapa constants sebagai nilai prioritas. Tabel berikut ini adalah rangkuman dari class Thread.

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program.

Konsep Lanjut Pemrograman Berorientasi Obyek

BAB IX THREAD Thread ClassThread namavar = new ClassThread(); Namavar.start(); New ClassThread().start();

TUGAS SISTEM TERDISTRIBUSI MULTYTHREAD EKO SURIPTO P

Membuat dan Menggunakan Class

EXCEPTION HANDLING. 1. Mampu menangani eksepsi 2. Mengetahui dan memahami tentang multithreading 3. Dapat membuat program tentang exception handling

Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai

PERTEMUAN 3 OBJEK DAN CLASS

public class Test { int i = 6; int j = 3; System.out.println(i/j); } Output :

Exception adalah penanda bahwa kondisi/kejadian yang tidak diinginkan telah terjadi pada program kita. Ada 2 jenis exception (+1 Error):

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

PEMROGRAMAN JAVA : THREAD

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?

Kelompok 12. Thread Java

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

1. Tujuan. 2. Latar Belakang. 3. Percobaan. Modul Praktikum TiledLayer

DASAR PEMOGRAMAN JAVA

PEMROGRAMAN SOCKET LANJUTAN

Bab 27. Sinkronisasi Dengan Semafor

5. Consider the following line of code : byte ohmy What is the range of values that could be assigned to the variable ohmy?

PEMOGRAMAN JAVA. Yoannita, S.Kom. Class(ii) [Constructor] [keyword this] Modifier Passing parameter [by value] [by references]

Percabangan & Perulangan

Badiyanto, S.Kom., M.Kom. PBO java

MODUL 9 EXCEPTION HANDLING

Threads of Control. Iwan Setyawan Adji, TE Jurusan Teknik Elektro FT UGM, Yogyakarta

Java Thread Games Series

Obyektif : KONTROL ALUR PROGRAM

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

PEMOGRAMAN JAVA. Yoannita. Tipe Data (ii) : Array Exception Handling

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita

Praktikum Pemrograman. Pengantar OOP STMIK AMIKOM YOGYAKARTA. Bayu Setiaji, S.Kom

PEMAHAMAN DASAR DASAR JAVA

1. Tujuan. 2. Latar Belakang. 3. Percobaan. Modul Praktikum Layer Manager

Exception Handling. Oleh : Agus Priyanto, M.Kom

if (ekspresi_boolean) { Pernyataan1; } else { Pernyataan2; }

Definisi Eksepsi (exception)

OBJECT ORIENTED PROGRAMMING (OOP)

PEMROGRAMAN BERORIENTASI OBJEK COLLECTION DAN MULTITHREADING. ADAM MUKHARIL BACHTIAR TEKNIK INFORMATIKA UNIKOM

BONUS. Dasar Java Mobile. Mengenal Java Mobile Mengenal MIDlet Mobile Grafis Mobile Animasi Latihan Soal

Pemrograman Berorientasi Objek Collection dan Multithreading. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

Input Nilai tanpa Case String di Java

Praktikum JTable. Gambar 1

A. TUJUAN PEMBELAJARAN 1. Mengetahui cara menangani exception dengan cara melempar exception. 2. Mengetahui cara membuat sendiri class exception.

IKG2I4 / Software Project I

Gambar 1. Single Linked List

Array Sebagai Parameter Method

SUMBER BELAJAR PENUNJANG PLPG

A. Judul Percobaan/praktikum Tipe Data, Keyword, Variabel, Operator dan Teknik Konfersi

Jobsheet 09. Overloading and Overriding Method

Pemrograman Lanjut. Class, dan Instance Variable. Aryo Pinandito, ST, M.MT Team Teaching Pemrograman Lanjut

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

PRAKTIKUM 6 EXCEPTION

PRAKTIKUM I EXCEPTION HANDLING

Bahasa Pemrograman :: Dasar Pemrograman Java

Percabangan & Perulangan

PRAKTIKUM 17 MENANGANI EXCEPTION

I. Tujuan Instruksional Umum Mengenal konsep dasar berorientasi objek Memahami dan dapat mengimplementasikan Kelas dan Objek pada java.

Sistem Tersebar 1 PAGE 10

MENGENAL JAVA SEBAGAI PEMROGRAMAN BERORIENTASI OBJEK DAN IMPLEMENTASI THREAD DI LINGKUNGAN UNIX/ LINUX. Hary Cahyono

Modul Praktikum Pemrograman Berorientasi Objek STMIK Yadika BANGIL

NASKAH UTAMA ULANGAN AKHIR SEMESTER GANJIL TAHUN PELAJARAN 2013/2014

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

KA2173 Pemrograman Berorientasi Objek. 10 BAB X PENGAKSESAN DATABASE. H a l 64

PERTEMUAN I PENGENALAN JAVA

Gambar 1. Single Linked List

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

Method yang ada pada parent class(superclass) didefinisikan kembali oleh kelas anaknya (subclass).

Modul 4 Exception, I/O, dan Operasi File

Pertemuan 2 Struktur Kontrol Percabangan

Percobaan 6 Exception

PERCOBAAN 1 : Ketik program di bawah ini, bila terjadi kasalahan waktu compile dan runtime, betulkan!

BAB 8 Argumen dari Command-line

Transkripsi:

Sinkronisasi Mengapa menggunakan sinkronisasi threads? Bagaimanapun juga sebuah thread yang berjalan bersama-sama kadang-kadang membutuhkan resource atau method dari luar Butuh untuk berkomunikasi satu dengan yang lain sehingga dapat mengetahui status dan aktifitas mereka Contoh: Permasalahan Produser-Konsumer 1 class TwoStrings { 2 static void print(string str1, String str2) { 3 System.out.print(str1); 4 try { 5 Thread.sleep(500); 6 } catch (InterruptedException ie) { 7 } 8 System.out.println(str2); 9 } 11 class PrintStringsThread implements Runnable { 12 Thread thread; 13 String str1, str2; 14 PrintStringsThread(String str1, String str2) { 15 this.str1 = str1; 16 this.str2 = str2; 17 thread = new Thread(this); 18 thread.start(); 19 } 20 public void run() { 21 TwoStrings.print(str1, str2); 24 class TestThread { 25 public static void main(string args[]) { 26 new PrintStringsThread("Hello ", "there."); 27 new PrintStringsThread("How are ", "you?"); 28 new PrintStringsThread("Thank you ", 29 "very much!"); 30 } 31 } Contoh hasil: Hello How are Thank you there. you? very much! Mengunci sebuah object: Untuk memastikan bahwa hanya satu thread yang mendapatkan hak akses kedalam method tertentu Java memperbolehkan penguncian terhadap sebuah object termasuk method-method-nya dengan menggunakan monitor Object tersebut akan menjalankan sebuah monitor implicit pada saat object dari method sinkronisasi dipanggil Sekali object tersebut dimonitor, monitor tersebut akan memastikan bahwa tidak ada thread yang akan mengakses object yang sama Noviyanto Halaman 1

Sinkronisasi sebuah method: Menggunakan keyword synchronized Dapat menjadi header dari pendefinisian method Dapat mensinkronisasi object dimana method tersebut menjadi anggota dari synchronized (<object>) { //statements yang akan disinkronisasikan } Contoh Synchronized Pertama 1 class TwoStrings { 2 synchronized static void print(string str1, 3 String str2) { 4 System.out.print(str1); 5 try { 6 Thread.sleep(500); 7 } catch (InterruptedException ie) { 8 } 9 System.out.println(str2); 11 } 12 class PrintStringsThread implements Runnable { 13 Thread thread; 14 String str1, str2; 15 PrintStringsThread(String str1, String str2) { 16 this.str1 = str1; 17 this.str2 = str2; 18 thread = new Thread(this); 19 thread.start(); 20 } 21 public void run() { 22 TwoStrings.print(str1, str2); 24 } 25 class TestThread { 26 public static void main(string args[]) { 27 new PrintStringsThread("Hello ", "there."); 28 new PrintStringsThread("How are ", "you?"); 29 new PrintStringsThread("Thank you ", 30 "very much!"); 31 } 32 } Contoh Hasil: Hello there. How are you? Thank you very much! Noviyanto Halaman 2

Contoh Synchronized Kedua 1 class TwoStrings { 2 static void print(string str1, String str2) { 3 System.out.print(str1); 4 try { 5 Thread.sleep(500); 6 } catch (InterruptedException ie) { 7 } 8 System.out.println(str2); 9 } 11 class PrintStringsThread implements Runnable { 12 Thread thread; 13 String str1, str2; 14 TwoStrings ts; 15 PrintStringsThread(String str1, String str2, 16 TwoStrings ts) { 17 this.str1 = str1; 18 this.str2 = str2; 19 this.ts = ts; 20 thread = new Thread(this); 21 thread.start(); 23 public void run() { 24 synchronized (ts) { 25 ts.print(str1, str2); 26 } 27 } 28 } 29 class TestThread { 30 public static void main(string args[]) { 31 TwoStrings ts = new TwoStrings(); 32 new PrintStringsThread("Hello ", "there.", ts); 33 new PrintStringsThread("How are ", "you?", ts); 34 new PrintStringsThread("Thank you ", 35 "very much!", ts); 36 }} Komunikasi Antar Thread: Methods Methods untuk komunikasi Interthread public final void wait() Menyebabkan thread ini menunggu sampai thread yang lain memanggil notify atau notifyall method dari object ini. Hal ini dapat menyebabkan InterruptedException. public final void notify() Membangunkan thread yang telah memanggil method wait dari object yang sama. public final void notifyall() Membangunkan semua thread yang telah memanggil method wait dari object yang sama. Noviyanto Halaman 3

Komunikasi Antar Thread Contoh Produsen-Konsumen 1 class SharedData { 2 int data; 3 synchronized void set(int value) { 4 System.out.println("Generate " + value); 5 data = value; 6 } 7 synchronized int get() { 8 System.out.println("Get " + data); 9 return data; 11 } 12 class Producer implements Runnable { 13 SharedData sd; 14 Producer(SharedData sd) { 15 this.sd = sd; 16 new Thread(this, "Producer").start(); 17 } 18 public void run() { 19 for (int i = 0; i < 10; i++) { 20 sd.set((int)(math.random()*100)); 21 } Noviyanto Halaman 4

24 class Consumer implements Runnable { 25 SharedData sd; 26 Consumer(SharedData sd) { 27 this.sd = sd; 28 new Thread(this, "Consumer").start(); 29 } 30 public void run() { 31 for (int i = 0; i < 10 ; i++) { 32 sd.get(); 33 } 34 } 35 } 36 class TestProducerConsumer { 37 public static void main(string args[]) 38 throws Exception { 39 SharedData sd = new SharedData(); 40 new Producer(sd); 41 new Consumer(sd); 42 } 43 } Contoh hasil: Generate 8 Generate 45 Generate 52 Generate 65 Get 65 Generate 23 Get 23 Generate 49 Get 49 Generate 35 Get 35 Generate 39 Get 39 Generate 85 Get 85 Get 85 Get 85 Generate 35 Get 35 Get 35 Contoh Produsen-Konsumen yang telah diperbaiki 1 class SharedData { 2 int data; 3 boolean valueset = false; 4 synchronized void set(int value) { 5 if (valueset) { //hanya dihasilkan jika mempumyai sebuah nilai 6 try { 7 wait(); 8 } catch (InterruptedException ie) { 9 } 11 System.out.println("Generate " + value); 12 data = value; 13 valueset = true; 14 notify(); 15 } 16 synchronized int get() { 17 if (!valueset) { 18 //producer belum memiliki suatu nilai 19 try { 20 wait(); 21 } catch (InterruptedException ie) { 24 System.out.println("Get " + data); 25 valueset = false; 26 notify(); 27 return data; 28 } 29 } 30 31 /* Bagian kode tertentu tidak berubah. */ Noviyanto Halaman 5

Contoh hasil: Generate 76 Get 76 Generate 25 Get 25 Generate 34 Get 34 Generate 84 Get 84 Generate 48 Get 48 Generate 29 Get 29 Generate 26 Get 26 Generate 86 Get 86 Generate 65 Get 65 Generate 38 Get 38 Generate 46 Get 46 Ringkasan Sinkronisasi Mengunci sebuah Object Keyword synchronized Method header Object Komunikasi Antar Thread (Interthread) Methods wait notify notifyall Noviyanto Halaman 6