SlideShare a Scribd company logo
1 of 6
Pemrog. Berorientasi Objek **, Pertemuan Ke-12
Noviyanto Halaman 1
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 }
10 }
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);
22 }
23 }
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
Pemrog. Berorientasi Objek **, Pertemuan Ke-12
Noviyanto Halaman 2
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);
10 }
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);
23 }
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!
Pemrog. Berorientasi Objek **, Pertemuan Ke-12
Noviyanto Halaman 3
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 }
10 }
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();
22 }
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.
Pemrog. Berorientasi Objek **, Pertemuan Ke-12
Noviyanto Halaman 4
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;
10 }
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 }
22 }
23 }
Pemrog. Berorientasi Objek **, Pertemuan Ke-12
Noviyanto Halaman 5
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 }
10 }
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) {
22 }
23 }
24 System.out.println("Get " + data);
25 valueSet = false;
26 notify();
27 return data;
28 }
29 }
30
31 /* Bagian kode tertentu tidak berubah. */
Pemrog. Berorientasi Objek **, Pertemuan Ke-12
Noviyanto Halaman 6
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

More Related Content

More from Jurnal IT

8_Penangan Eksepsi.pdf
8_Penangan Eksepsi.pdf8_Penangan Eksepsi.pdf
8_Penangan Eksepsi.pdfJurnal IT
 
7_Packages.pdf
7_Packages.pdf7_Packages.pdf
7_Packages.pdfJurnal IT
 
6_String.pdf
6_String.pdf6_String.pdf
6_String.pdfJurnal IT
 
5_Pewarisan.pdf
5_Pewarisan.pdf5_Pewarisan.pdf
5_Pewarisan.pdfJurnal IT
 
3_Pengertian_Class_Object_Method.pdf
3_Pengertian_Class_Object_Method.pdf3_Pengertian_Class_Object_Method.pdf
3_Pengertian_Class_Object_Method.pdfJurnal IT
 
2_Struktur_kontrol.pdf
2_Struktur_kontrol.pdf2_Struktur_kontrol.pdf
2_Struktur_kontrol.pdfJurnal IT
 
1_Pengenalan_Java.pdf
1_Pengenalan_Java.pdf1_Pengenalan_Java.pdf
1_Pengenalan_Java.pdfJurnal IT
 
delphi part 13.pdf
delphi part 13.pdfdelphi part 13.pdf
delphi part 13.pdfJurnal IT
 
delphi part 11.pdf
delphi part 11.pdfdelphi part 11.pdf
delphi part 11.pdfJurnal IT
 
delphi part 8 new.pdf
delphi part 8 new.pdfdelphi part 8 new.pdf
delphi part 8 new.pdfJurnal IT
 
delphi part 7 new.pdf
delphi part 7 new.pdfdelphi part 7 new.pdf
delphi part 7 new.pdfJurnal IT
 
delphi part 6.pdf
delphi part 6.pdfdelphi part 6.pdf
delphi part 6.pdfJurnal IT
 
delphi part 5.pdf
delphi part 5.pdfdelphi part 5.pdf
delphi part 5.pdfJurnal IT
 
delphi part 4.pdf
delphi part 4.pdfdelphi part 4.pdf
delphi part 4.pdfJurnal IT
 
delphi part 3.pdf
delphi part 3.pdfdelphi part 3.pdf
delphi part 3.pdfJurnal IT
 
delphi part 2.pdf
delphi part 2.pdfdelphi part 2.pdf
delphi part 2.pdfJurnal IT
 
Delphi part 1.pdf
Delphi part 1.pdfDelphi part 1.pdf
Delphi part 1.pdfJurnal IT
 
Transparant_database.doc
Transparant_database.docTransparant_database.doc
Transparant_database.docJurnal IT
 
Pertemuan ke XIII b.doc
Pertemuan ke XIII b.docPertemuan ke XIII b.doc
Pertemuan ke XIII b.docJurnal IT
 

More from Jurnal IT (20)

8_Penangan Eksepsi.pdf
8_Penangan Eksepsi.pdf8_Penangan Eksepsi.pdf
8_Penangan Eksepsi.pdf
 
7_Packages.pdf
7_Packages.pdf7_Packages.pdf
7_Packages.pdf
 
6_String.pdf
6_String.pdf6_String.pdf
6_String.pdf
 
5_Pewarisan.pdf
5_Pewarisan.pdf5_Pewarisan.pdf
5_Pewarisan.pdf
 
4_Array.pdf
4_Array.pdf4_Array.pdf
4_Array.pdf
 
3_Pengertian_Class_Object_Method.pdf
3_Pengertian_Class_Object_Method.pdf3_Pengertian_Class_Object_Method.pdf
3_Pengertian_Class_Object_Method.pdf
 
2_Struktur_kontrol.pdf
2_Struktur_kontrol.pdf2_Struktur_kontrol.pdf
2_Struktur_kontrol.pdf
 
1_Pengenalan_Java.pdf
1_Pengenalan_Java.pdf1_Pengenalan_Java.pdf
1_Pengenalan_Java.pdf
 
delphi part 13.pdf
delphi part 13.pdfdelphi part 13.pdf
delphi part 13.pdf
 
delphi part 11.pdf
delphi part 11.pdfdelphi part 11.pdf
delphi part 11.pdf
 
delphi part 8 new.pdf
delphi part 8 new.pdfdelphi part 8 new.pdf
delphi part 8 new.pdf
 
delphi part 7 new.pdf
delphi part 7 new.pdfdelphi part 7 new.pdf
delphi part 7 new.pdf
 
delphi part 6.pdf
delphi part 6.pdfdelphi part 6.pdf
delphi part 6.pdf
 
delphi part 5.pdf
delphi part 5.pdfdelphi part 5.pdf
delphi part 5.pdf
 
delphi part 4.pdf
delphi part 4.pdfdelphi part 4.pdf
delphi part 4.pdf
 
delphi part 3.pdf
delphi part 3.pdfdelphi part 3.pdf
delphi part 3.pdf
 
delphi part 2.pdf
delphi part 2.pdfdelphi part 2.pdf
delphi part 2.pdf
 
Delphi part 1.pdf
Delphi part 1.pdfDelphi part 1.pdf
Delphi part 1.pdf
 
Transparant_database.doc
Transparant_database.docTransparant_database.doc
Transparant_database.doc
 
Pertemuan ke XIII b.doc
Pertemuan ke XIII b.docPertemuan ke XIII b.doc
Pertemuan ke XIII b.doc
 

Recently uploaded

PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxPPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxdpp11tya
 
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxKontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxssuser50800a
 
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKAMODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKAAndiCoc
 
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMAKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMIGustiBagusGending
 
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKAKELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKAppgauliananda03
 
Modul Projek - Batik Ecoprint - Fase B.pdf
Modul Projek  - Batik Ecoprint - Fase B.pdfModul Projek  - Batik Ecoprint - Fase B.pdf
Modul Projek - Batik Ecoprint - Fase B.pdfanitanurhidayah51
 
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfContoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfCandraMegawati
 
BAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptx
BAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptxBAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptx
BAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptxJuliBriana2
 
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptxBab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptxrizalhabib4
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptxDEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptxwawan479953
 
power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"baimmuhammad71
 
algoritma dan pemrograman komputer, tugas kelas 10
algoritma dan pemrograman komputer, tugas kelas 10algoritma dan pemrograman komputer, tugas kelas 10
algoritma dan pemrograman komputer, tugas kelas 10maulitaYuliaS
 
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikabab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikaAtiAnggiSupriyati
 
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptxSesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptxSovyOktavianti
 
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxPEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxsukmakarim1998
 
SEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.ppt
SEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.pptSEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.ppt
SEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.pptAlfandoWibowo2
 
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxRefleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxIrfanAudah1
 
Stoikiometri kelas 10 kurikulum Merdeka.ppt
Stoikiometri kelas 10 kurikulum Merdeka.pptStoikiometri kelas 10 kurikulum Merdeka.ppt
Stoikiometri kelas 10 kurikulum Merdeka.pptannanurkhasanah2
 
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...pipinafindraputri1
 
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITASMATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITASbilqisizzati
 

Recently uploaded (20)

PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptxPPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
PPT PERUBAHAN LINGKUNGAN MATA PELAJARAN BIOLOGI KELAS X.pptx
 
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxKontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
 
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKAMODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
 
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMAKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
 
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKAKELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
 
Modul Projek - Batik Ecoprint - Fase B.pdf
Modul Projek  - Batik Ecoprint - Fase B.pdfModul Projek  - Batik Ecoprint - Fase B.pdf
Modul Projek - Batik Ecoprint - Fase B.pdf
 
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfContoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
 
BAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptx
BAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptxBAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptx
BAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptx
 
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptxBab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptxDEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
 
power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"power point bahasa indonesia "Karya Ilmiah"
power point bahasa indonesia "Karya Ilmiah"
 
algoritma dan pemrograman komputer, tugas kelas 10
algoritma dan pemrograman komputer, tugas kelas 10algoritma dan pemrograman komputer, tugas kelas 10
algoritma dan pemrograman komputer, tugas kelas 10
 
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ikabab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
bab 6 ancaman terhadap negara dalam bingkai bhinneka tunggal ika
 
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptxSesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
Sesi 1_PPT Ruang Kolaborasi Modul 1.3 _ ke 1_PGP Angkatan 10.pptx
 
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptxPEMANASAN GLOBAL - MATERI KELAS X MA.pptx
PEMANASAN GLOBAL - MATERI KELAS X MA.pptx
 
SEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.ppt
SEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.pptSEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.ppt
SEJARAH PERKEMBANGAN KEPERAWATAN JIWA dan Trend Issue.ppt
 
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxRefleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
 
Stoikiometri kelas 10 kurikulum Merdeka.ppt
Stoikiometri kelas 10 kurikulum Merdeka.pptStoikiometri kelas 10 kurikulum Merdeka.ppt
Stoikiometri kelas 10 kurikulum Merdeka.ppt
 
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
 
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITASMATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
 

12_Sinkronisasi.pdf

  • 1. Pemrog. Berorientasi Objek **, Pertemuan Ke-12 Noviyanto Halaman 1 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 } 10 } 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); 22 } 23 } 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
  • 2. Pemrog. Berorientasi Objek **, Pertemuan Ke-12 Noviyanto Halaman 2 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); 10 } 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); 23 } 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!
  • 3. Pemrog. Berorientasi Objek **, Pertemuan Ke-12 Noviyanto Halaman 3 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 } 10 } 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(); 22 } 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.
  • 4. Pemrog. Berorientasi Objek **, Pertemuan Ke-12 Noviyanto Halaman 4 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; 10 } 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 } 22 } 23 }
  • 5. Pemrog. Berorientasi Objek **, Pertemuan Ke-12 Noviyanto Halaman 5 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 } 10 } 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) { 22 } 23 } 24 System.out.println("Get " + data); 25 valueSet = false; 26 notify(); 27 return data; 28 } 29 } 30 31 /* Bagian kode tertentu tidak berubah. */
  • 6. Pemrog. Berorientasi Objek **, Pertemuan Ke-12 Noviyanto Halaman 6 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