SlideShare a Scribd company logo
1 of 14
Download to read offline
Concurrency 
Pemrgoraman 
Berorientasi Objek 
dodo@kuliahkita.com
Pendahuluan 
Concurrency pada konsep pemrograman berorientasi objek 
adalah bertujuan untuk menjalankan beberapa instruksi 
secara bersamaan (simultan). 
Dalam aplikasi atau program tertentu ada kalanya perlu 
menggunakan concurrency untuk melakukan pemrosesan 
sekaligus.
Implementasi Concurrency 
Karena bahasa yang diggunakan pada pemrograman 
berorientasi objek di materi ini adalah Java, maka 
concurrency akan berkaitan dengan process dan thread. 
Pada umumnya, diimplementasikan dengan Thread. 
Setiap thread diasosiasikan dengan sebuah instansiasi 
dari class Thread
Process dan Thread 
Thread adalah bagian dari sebuah process. 
Sebuah proses dapat memiliki banyak thread (multiple 
thread). 
Perbedaan proses dan thread adalah pada memory. Tiap 
proses memiliki memory space sendiri yang terpisah, 
sedangkan thread akan memakan memory space yang 
sama.
Interrupts 
Sebuah thread pasti akan mengeksekusi instruksi-instruksi 
tertentu. Dalam eksekusinya tidak dipastikan akan selalu 
berjalan dengan baik. 
Interrupt adalah method pada objek thread yang dipanggil 
ketika menangani kesalahan tertentu dengan mengirimkan 
interupsi. 
Interrupt perlu diimplementasi sebagai salah satu 
penanganan kesalahan (error handling)
Sinkronisasi (Syncrhonization) 
Thread-thread dapat berkomunikasi dengan objek lain yang 
sama ataupun berbeda. 
Sinkronisasi dibutuhkan untuk mencegah adanya 
interferensi thread dan memory consistency error. 
Error ini akan terjadi ketika lebih dari satu thread 
mengakses objek data yang sama dengan sinkronisasi 
yang tidak tepat.
Race Condition 
Race condition adalah sebuah kondisi yang merupakan bug 
atau error pada program karena eksekusi instruksi secara 
paralel oleh banyak thread sekaligus. 
Kondisi ini merupakan salah satu kesalahan yang sering 
terjadi pada aplikasi atau program yang konkuren, misal 
dengan menggunakan bahasa pemrograman Java.
Race Condition - 2 
Race condition terjadi apabila thread yang berbeda 
beroperasi pada objek yang sama tanpa sinkronisasi yang 
tepat (interleave) dan mengakibatkan gangguan. 
Contoh: 
Proses inkremental. Apabila 2 buah thread mengakses data yang sama secara 
bersamaan, misalkan “5”. Thread itu akan membaca data yang sama (5) dan 
keduanya menambahkannya menjadi “6”. Proses akan kehilangan 1 hitungan, 
karena seharusnya inkremen dilakukan 2 kali sehingga seharusnya nilai 
akhirnya “7”.
Deadlock dan Livelock 
Deadlock adalah proses dimana 2 atau lebih thread saling 
menunggu untuk melepas resource yang digunakan dan 
mengakibatkan stuck dalam waktu yang tak terbatas. 
Livelock adalah keadaan dimana dua atau lebih thread 
saling berbagi respon secara bergantian dan banyak 
sehingga program atau aplikasi menjadi stuck. (terlalu 
sibuk menangani respons)
Starvation 
Stravation adalah kondisi dimana salah satu thread tidak 
dapat mengakses ke shared resource dan tidak dapat 
melanjutkan prosesnya. 
Hal ini terjadi karena adanya pemakaian resource yang 
terlalu lama oleh thread lain (greedy thread), sehingga 
resource tidak dapat digunakan (unavailable).
Contoh Implementasi 
class PrintDemo { 
public void printCount(){ 
try { 
for(int i = 5; i > 0; i--) { 
System.out.println("Counter --- " + i ); 
} 
} catch (Exception e) { 
System.out.println("Thread interrupted."); 
} 
} 
} 
...
Contoh Implementasi 
class ThreadDemo extends Thread { 
private Thread t; 
private String threadName; 
PrintDemo PD; 
ThreadDemo( String name, PrintDemo pd){ 
threadName = name; 
PD = pd; 
} 
public void run() { 
synchronized(PD) { 
PD.printCount(); 
} 
System.out.println("Thread " + threadName + " exiting."); 
} 
...
Contoh Implementasi 
public void start () 
{ 
System.out.println("Starting " + threadName ); 
if (t == null) 
{ 
t = new Thread (this, threadName); 
t.start (); 
} 
} 
} 
...
Contoh Implementasi 
public class TestThread { 
public static void main(String args[]) { 
PrintDemo PD = new PrintDemo(); 
ThreadDemo T1 = new ThreadDemo( "Thread - 1 ", PD ); 
ThreadDemo T2 = new ThreadDemo( "Thread - 2 ", PD ); 
T1.start(); 
T2.start(); 
// wait for threads to end 
try { 
T1.join(); 
T2.join(); 
} catch( Exception e) { 
System.out.println("Interrupted"); 
} 
} 
}

More Related Content

What's hot

Makalah set instruksi
Makalah set instruksiMakalah set instruksi
Makalah set instruksi
ratna46
 
Keamanan sistem informasi
Keamanan sistem informasiKeamanan sistem informasi
Keamanan sistem informasi
Eko Mardianto
 
SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSSICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOS
lorenapardo
 

What's hot (20)

Materi imk aspek manusia
Materi imk aspek manusiaMateri imk aspek manusia
Materi imk aspek manusia
 
Tipe manajemen memori pada sistem operasi
Tipe manajemen memori pada sistem operasi Tipe manajemen memori pada sistem operasi
Tipe manajemen memori pada sistem operasi
 
Algoritma dan Struktur Data - Sequential Search
Algoritma dan Struktur Data - Sequential SearchAlgoritma dan Struktur Data - Sequential Search
Algoritma dan Struktur Data - Sequential Search
 
Strategi pengujian perangkat lunak
Strategi pengujian perangkat lunakStrategi pengujian perangkat lunak
Strategi pengujian perangkat lunak
 
Sistem Pakar Certainty factor
Sistem Pakar Certainty factor Sistem Pakar Certainty factor
Sistem Pakar Certainty factor
 
Virtual Memory
Virtual MemoryVirtual Memory
Virtual Memory
 
Paralel prosesor
Paralel prosesorParalel prosesor
Paralel prosesor
 
Algoritma Pemrograman - Pseudocode & Flowchart
Algoritma Pemrograman - Pseudocode & FlowchartAlgoritma Pemrograman - Pseudocode & Flowchart
Algoritma Pemrograman - Pseudocode & Flowchart
 
Manajemen memory (10) fix
Manajemen memory (10) fixManajemen memory (10) fix
Manajemen memory (10) fix
 
Modul simulasi pemograman mikrokontroler
Modul simulasi pemograman mikrokontrolerModul simulasi pemograman mikrokontroler
Modul simulasi pemograman mikrokontroler
 
Makalah set instruksi
Makalah set instruksiMakalah set instruksi
Makalah set instruksi
 
Ch 04 (Siklus Instruksi dan Interrupt)
Ch 04 (Siklus Instruksi dan Interrupt)Ch 04 (Siklus Instruksi dan Interrupt)
Ch 04 (Siklus Instruksi dan Interrupt)
 
PPT ALGORITMA KRIPTOGRAFI
PPT ALGORITMA KRIPTOGRAFIPPT ALGORITMA KRIPTOGRAFI
PPT ALGORITMA KRIPTOGRAFI
 
Jaringan Syaraf Tiruan
Jaringan Syaraf TiruanJaringan Syaraf Tiruan
Jaringan Syaraf Tiruan
 
 Manajemen memory dan Swapping
 Manajemen memory dan Swapping Manajemen memory dan Swapping
 Manajemen memory dan Swapping
 
Contoh project sistem informasi
Contoh project sistem informasiContoh project sistem informasi
Contoh project sistem informasi
 
Keamanan sistem informasi
Keamanan sistem informasiKeamanan sistem informasi
Keamanan sistem informasi
 
SICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOSSICRONIZACION DE PROCESOS
SICRONIZACION DE PROCESOS
 
Virtual memory
Virtual memoryVirtual memory
Virtual memory
 
Minggu ketiga
Minggu ketigaMinggu ketiga
Minggu ketiga
 

Viewers also liked

Catálogos de productos 02: balanzas, módulos y plataformas de pesaje
Catálogos de productos 02: balanzas, módulos y plataformas de pesajeCatálogos de productos 02: balanzas, módulos y plataformas de pesaje
Catálogos de productos 02: balanzas, módulos y plataformas de pesaje
LAUMAS
 
Umesh Bali-Updated Profile new (1)
Umesh Bali-Updated Profile new (1)Umesh Bali-Updated Profile new (1)
Umesh Bali-Updated Profile new (1)
umesh bali
 
Tugas PPT ICT kelompok 3 IV F
Tugas PPT ICT kelompok 3 IV FTugas PPT ICT kelompok 3 IV F
Tugas PPT ICT kelompok 3 IV F
Selvameidha
 
Ppt ict newwww
Ppt ict newwwwPpt ict newwww
Ppt ict newwww
WAFFAK
 
Gloria Hernández - CV
Gloria Hernández - CVGloria Hernández - CV
Gloria Hernández - CV
elen1202
 
PPT ICT KELOMPOK 3 KELAS 4F
PPT ICT KELOMPOK 3 KELAS 4FPPT ICT KELOMPOK 3 KELAS 4F
PPT ICT KELOMPOK 3 KELAS 4F
Selvameidha
 

Viewers also liked (20)

Matematika Diskrit - 10 pohon - 03
Matematika Diskrit - 10 pohon - 03Matematika Diskrit - 10 pohon - 03
Matematika Diskrit - 10 pohon - 03
 
Catálogos de productos 02: balanzas, módulos y plataformas de pesaje
Catálogos de productos 02: balanzas, módulos y plataformas de pesajeCatálogos de productos 02: balanzas, módulos y plataformas de pesaje
Catálogos de productos 02: balanzas, módulos y plataformas de pesaje
 
Kriptografi - Advanced Encryption Standard
Kriptografi - Advanced Encryption StandardKriptografi - Advanced Encryption Standard
Kriptografi - Advanced Encryption Standard
 
Pengenalan Teknologi Informasi 7 - Input Output
Pengenalan Teknologi Informasi   7 - Input OutputPengenalan Teknologi Informasi   7 - Input Output
Pengenalan Teknologi Informasi 7 - Input Output
 
Umesh Bali-Updated Profile new (1)
Umesh Bali-Updated Profile new (1)Umesh Bali-Updated Profile new (1)
Umesh Bali-Updated Profile new (1)
 
Algoritma dan Struktur Data - Pendahuluan
Algoritma dan Struktur Data - PendahuluanAlgoritma dan Struktur Data - Pendahuluan
Algoritma dan Struktur Data - Pendahuluan
 
Matematika Diskrit - 05 rekursi dan relasi rekurens - 03
Matematika Diskrit - 05 rekursi dan relasi rekurens  - 03Matematika Diskrit - 05 rekursi dan relasi rekurens  - 03
Matematika Diskrit - 05 rekursi dan relasi rekurens - 03
 
Tugas PPT ICT kelompok 3 IV F
Tugas PPT ICT kelompok 3 IV FTugas PPT ICT kelompok 3 IV F
Tugas PPT ICT kelompok 3 IV F
 
Ppt ict newwww
Ppt ict newwwwPpt ict newwww
Ppt ict newwww
 
Pemrograman SQL - Join
Pemrograman SQL - JoinPemrograman SQL - Join
Pemrograman SQL - Join
 
Algoritma dan Struktur Data - Konstruktor dan Destruktor
Algoritma dan Struktur Data - Konstruktor dan DestruktorAlgoritma dan Struktur Data - Konstruktor dan Destruktor
Algoritma dan Struktur Data - Konstruktor dan Destruktor
 
Test
TestTest
Test
 
Gloria Hernández - CV
Gloria Hernández - CVGloria Hernández - CV
Gloria Hernández - CV
 
CAP DE SETMANA SEMPRE
CAP DE SETMANA SEMPRECAP DE SETMANA SEMPRE
CAP DE SETMANA SEMPRE
 
PPT ICT KELOMPOK 3 KELAS 4F
PPT ICT KELOMPOK 3 KELAS 4FPPT ICT KELOMPOK 3 KELAS 4F
PPT ICT KELOMPOK 3 KELAS 4F
 
Dolina Będkowska
Dolina BędkowskaDolina Będkowska
Dolina Będkowska
 
Pengenalan Teknologi Informasi - 2 - Pemanfaatan Teknologi Informasi
Pengenalan Teknologi Informasi - 2 - Pemanfaatan Teknologi InformasiPengenalan Teknologi Informasi - 2 - Pemanfaatan Teknologi Informasi
Pengenalan Teknologi Informasi - 2 - Pemanfaatan Teknologi Informasi
 
Algoritma dan Struktur Data - Stack
Algoritma dan Struktur Data - StackAlgoritma dan Struktur Data - Stack
Algoritma dan Struktur Data - Stack
 
Pasar Saham - 19 Indikator
Pasar Saham - 19 IndikatorPasar Saham - 19 Indikator
Pasar Saham - 19 Indikator
 
Paul McCartney and Nancy Shevell wedding: Official portrait by daughter Mary
Paul McCartney and Nancy Shevell wedding: Official portrait by daughter MaryPaul McCartney and Nancy Shevell wedding: Official portrait by daughter Mary
Paul McCartney and Nancy Shevell wedding: Official portrait by daughter Mary
 

Similar to OOP - Konkurensi

Similar to OOP - Konkurensi (20)

9_Multithreading.pdf
9_Multithreading.pdf9_Multithreading.pdf
9_Multithreading.pdf
 
9_Multithreading.pdf
9_Multithreading.pdf9_Multithreading.pdf
9_Multithreading.pdf
 
Konsep I/O pada Pemrograman Berorientasi Obyek
Konsep I/O pada Pemrograman Berorientasi ObyekKonsep I/O pada Pemrograman Berorientasi Obyek
Konsep I/O pada Pemrograman Berorientasi Obyek
 
Chapter9.os
Chapter9.osChapter9.os
Chapter9.os
 
Konsep dasar thread programming
Konsep dasar thread programmingKonsep dasar thread programming
Konsep dasar thread programming
 
Tugas Pendahuluan Praktikum PBO Modul 8 - Multithread
Tugas Pendahuluan Praktikum PBO Modul 8 - MultithreadTugas Pendahuluan Praktikum PBO Modul 8 - Multithread
Tugas Pendahuluan Praktikum PBO Modul 8 - Multithread
 
4. Thread
4. Thread4. Thread
4. Thread
 
MULTITHREADING 613120023 PBO_d3if_36-01
MULTITHREADING 613120023 PBO_d3if_36-01MULTITHREADING 613120023 PBO_d3if_36-01
MULTITHREADING 613120023 PBO_d3if_36-01
 
Jeni Intro2 Bab09 Threads
Jeni Intro2 Bab09 ThreadsJeni Intro2 Bab09 Threads
Jeni Intro2 Bab09 Threads
 
Threading
ThreadingThreading
Threading
 
Sistem Operasi_Thread campur sari
Sistem Operasi_Thread campur sariSistem Operasi_Thread campur sari
Sistem Operasi_Thread campur sari
 
Sister 05 - proses
Sister   05 - prosesSister   05 - proses
Sister 05 - proses
 
Tugas Rekayasa Web instilah pada pemrograman java
Tugas Rekayasa Web instilah pada pemrograman javaTugas Rekayasa Web instilah pada pemrograman java
Tugas Rekayasa Web instilah pada pemrograman java
 
Tugas 4
Tugas 4Tugas 4
Tugas 4
 
Asynchronous Progamming.pptx
Asynchronous Progamming.pptxAsynchronous Progamming.pptx
Asynchronous Progamming.pptx
 
Pertemuan 4 MoProg.pptx
Pertemuan 4 MoProg.pptxPertemuan 4 MoProg.pptx
Pertemuan 4 MoProg.pptx
 
Pemrograman java
Pemrograman javaPemrograman java
Pemrograman java
 
Tugas 4 rekayasa web 0316
Tugas 4 rekayasa web 0316Tugas 4 rekayasa web 0316
Tugas 4 rekayasa web 0316
 
Pengenalan pemrograman java
Pengenalan pemrograman javaPengenalan pemrograman java
Pengenalan pemrograman java
 
Pengenalan pemrograman java
Pengenalan pemrograman javaPengenalan pemrograman java
Pengenalan pemrograman java
 

More from KuliahKita

More from KuliahKita (20)

CSS Eksperimen - 05-2 Popup Menu
CSS Eksperimen - 05-2 Popup MenuCSS Eksperimen - 05-2 Popup Menu
CSS Eksperimen - 05-2 Popup Menu
 
CSS Eksperimen - 05-1 Popup Konfirmasi
CSS Eksperimen - 05-1 Popup KonfirmasiCSS Eksperimen - 05-1 Popup Konfirmasi
CSS Eksperimen - 05-1 Popup Konfirmasi
 
CSS Eksperimen - 04-4 Elemen Sliding Door
CSS Eksperimen - 04-4 Elemen Sliding DoorCSS Eksperimen - 04-4 Elemen Sliding Door
CSS Eksperimen - 04-4 Elemen Sliding Door
 
CSS Eksperimen - 04-3 Elemen Card Flip
CSS Eksperimen - 04-3 Elemen Card FlipCSS Eksperimen - 04-3 Elemen Card Flip
CSS Eksperimen - 04-3 Elemen Card Flip
 
CSS Eksperimen - 04-2 accordion
CSS Eksperimen - 04-2 accordionCSS Eksperimen - 04-2 accordion
CSS Eksperimen - 04-2 accordion
 
CSS Eksperimen - 04-1 informasi tab
CSS Eksperimen - 04-1 informasi tabCSS Eksperimen - 04-1 informasi tab
CSS Eksperimen - 04-1 informasi tab
 
CSS Eksperimen - 03-3 Slide Side Menu
CSS Eksperimen - 03-3 Slide Side MenuCSS Eksperimen - 03-3 Slide Side Menu
CSS Eksperimen - 03-3 Slide Side Menu
 
CSS Eksperimen - 03-2 Breadcrumb
CSS Eksperimen - 03-2 BreadcrumbCSS Eksperimen - 03-2 Breadcrumb
CSS Eksperimen - 03-2 Breadcrumb
 
CSS Eksperimen - 03-1 navigasi dasar
CSS Eksperimen - 03-1 navigasi dasarCSS Eksperimen - 03-1 navigasi dasar
CSS Eksperimen - 03-1 navigasi dasar
 
CSS Eksperimen - 02-2 Flexbox Grid
CSS Eksperimen - 02-2 Flexbox GridCSS Eksperimen - 02-2 Flexbox Grid
CSS Eksperimen - 02-2 Flexbox Grid
 
Eksperimen CSS - 02-1 grid layout
Eksperimen CSS - 02-1 grid layoutEksperimen CSS - 02-1 grid layout
Eksperimen CSS - 02-1 grid layout
 
Eksperimen CSS - 01 Pendahuluan
Eksperimen CSS - 01 PendahuluanEksperimen CSS - 01 Pendahuluan
Eksperimen CSS - 01 Pendahuluan
 
07 equity research (bagian 2)
07 equity research (bagian 2)07 equity research (bagian 2)
07 equity research (bagian 2)
 
Pasar Saham - 32 Discounted Cash Flow (DCF)
Pasar Saham - 32 Discounted Cash Flow (DCF)Pasar Saham - 32 Discounted Cash Flow (DCF)
Pasar Saham - 32 Discounted Cash Flow (DCF)
 
Pasar Saham - Equity Research (bagian 1)
Pasar Saham - Equity Research (bagian 1)Pasar Saham - Equity Research (bagian 1)
Pasar Saham - Equity Research (bagian 1)
 
Pasar Saham - 30 Investment Due Dilligence
Pasar Saham - 30 Investment Due DilligencePasar Saham - 30 Investment Due Dilligence
Pasar Saham - 30 Investment Due Dilligence
 
Pasar Saham - 29 Financial Ratio 03
Pasar Saham - 29 Financial Ratio 03Pasar Saham - 29 Financial Ratio 03
Pasar Saham - 29 Financial Ratio 03
 
Pasar Saham - 28 Financial Ratio 02
Pasar Saham - 28 Financial Ratio 02Pasar Saham - 28 Financial Ratio 02
Pasar Saham - 28 Financial Ratio 02
 
Pasar Saham -27 financial ratio 01
Pasar Saham -27 financial ratio  01Pasar Saham -27 financial ratio  01
Pasar Saham -27 financial ratio 01
 
Pasar Saham - 26 Cash Flow Statement
Pasar Saham - 26 Cash Flow StatementPasar Saham - 26 Cash Flow Statement
Pasar Saham - 26 Cash Flow Statement
 

Recently uploaded (9)

MODUL AJAR PENGANTAR SURVEY PEMETAAN.pdf
MODUL AJAR PENGANTAR SURVEY PEMETAAN.pdfMODUL AJAR PENGANTAR SURVEY PEMETAAN.pdf
MODUL AJAR PENGANTAR SURVEY PEMETAAN.pdf
 
Materi Asesi SKK Manajer Pelaksana SPAM- jenjang 6.pptx
Materi Asesi SKK Manajer Pelaksana SPAM- jenjang 6.pptxMateri Asesi SKK Manajer Pelaksana SPAM- jenjang 6.pptx
Materi Asesi SKK Manajer Pelaksana SPAM- jenjang 6.pptx
 
Strategi Pengembangan Agribisnis di Indonesia
Strategi Pengembangan Agribisnis di IndonesiaStrategi Pengembangan Agribisnis di Indonesia
Strategi Pengembangan Agribisnis di Indonesia
 
MAteri:Penggunaan fungsi pada pemrograman c++
MAteri:Penggunaan fungsi pada pemrograman c++MAteri:Penggunaan fungsi pada pemrograman c++
MAteri:Penggunaan fungsi pada pemrograman c++
 
4. GWTJWRYJJJJJJJJJJJJJJJJJJWJSNJYSRR.pdf
4. GWTJWRYJJJJJJJJJJJJJJJJJJWJSNJYSRR.pdf4. GWTJWRYJJJJJJJJJJJJJJJJJJWJSNJYSRR.pdf
4. GWTJWRYJJJJJJJJJJJJJJJJJJWJSNJYSRR.pdf
 
Manual Desain Perkerasan jalan 2017 FINAL.pptx
Manual Desain Perkerasan jalan 2017 FINAL.pptxManual Desain Perkerasan jalan 2017 FINAL.pptx
Manual Desain Perkerasan jalan 2017 FINAL.pptx
 
10.-Programable-Logic-Controller (1).ppt
10.-Programable-Logic-Controller (1).ppt10.-Programable-Logic-Controller (1).ppt
10.-Programable-Logic-Controller (1).ppt
 
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdf
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdfTEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdf
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdf
 
Metode numerik Bidang Teknik Sipil perencanaan.pdf
Metode numerik Bidang Teknik Sipil perencanaan.pdfMetode numerik Bidang Teknik Sipil perencanaan.pdf
Metode numerik Bidang Teknik Sipil perencanaan.pdf
 

OOP - Konkurensi

  • 1. Concurrency Pemrgoraman Berorientasi Objek dodo@kuliahkita.com
  • 2. Pendahuluan Concurrency pada konsep pemrograman berorientasi objek adalah bertujuan untuk menjalankan beberapa instruksi secara bersamaan (simultan). Dalam aplikasi atau program tertentu ada kalanya perlu menggunakan concurrency untuk melakukan pemrosesan sekaligus.
  • 3. Implementasi Concurrency Karena bahasa yang diggunakan pada pemrograman berorientasi objek di materi ini adalah Java, maka concurrency akan berkaitan dengan process dan thread. Pada umumnya, diimplementasikan dengan Thread. Setiap thread diasosiasikan dengan sebuah instansiasi dari class Thread
  • 4. Process dan Thread Thread adalah bagian dari sebuah process. Sebuah proses dapat memiliki banyak thread (multiple thread). Perbedaan proses dan thread adalah pada memory. Tiap proses memiliki memory space sendiri yang terpisah, sedangkan thread akan memakan memory space yang sama.
  • 5. Interrupts Sebuah thread pasti akan mengeksekusi instruksi-instruksi tertentu. Dalam eksekusinya tidak dipastikan akan selalu berjalan dengan baik. Interrupt adalah method pada objek thread yang dipanggil ketika menangani kesalahan tertentu dengan mengirimkan interupsi. Interrupt perlu diimplementasi sebagai salah satu penanganan kesalahan (error handling)
  • 6. Sinkronisasi (Syncrhonization) Thread-thread dapat berkomunikasi dengan objek lain yang sama ataupun berbeda. Sinkronisasi dibutuhkan untuk mencegah adanya interferensi thread dan memory consistency error. Error ini akan terjadi ketika lebih dari satu thread mengakses objek data yang sama dengan sinkronisasi yang tidak tepat.
  • 7. Race Condition Race condition adalah sebuah kondisi yang merupakan bug atau error pada program karena eksekusi instruksi secara paralel oleh banyak thread sekaligus. Kondisi ini merupakan salah satu kesalahan yang sering terjadi pada aplikasi atau program yang konkuren, misal dengan menggunakan bahasa pemrograman Java.
  • 8. Race Condition - 2 Race condition terjadi apabila thread yang berbeda beroperasi pada objek yang sama tanpa sinkronisasi yang tepat (interleave) dan mengakibatkan gangguan. Contoh: Proses inkremental. Apabila 2 buah thread mengakses data yang sama secara bersamaan, misalkan “5”. Thread itu akan membaca data yang sama (5) dan keduanya menambahkannya menjadi “6”. Proses akan kehilangan 1 hitungan, karena seharusnya inkremen dilakukan 2 kali sehingga seharusnya nilai akhirnya “7”.
  • 9. Deadlock dan Livelock Deadlock adalah proses dimana 2 atau lebih thread saling menunggu untuk melepas resource yang digunakan dan mengakibatkan stuck dalam waktu yang tak terbatas. Livelock adalah keadaan dimana dua atau lebih thread saling berbagi respon secara bergantian dan banyak sehingga program atau aplikasi menjadi stuck. (terlalu sibuk menangani respons)
  • 10. Starvation Stravation adalah kondisi dimana salah satu thread tidak dapat mengakses ke shared resource dan tidak dapat melanjutkan prosesnya. Hal ini terjadi karena adanya pemakaian resource yang terlalu lama oleh thread lain (greedy thread), sehingga resource tidak dapat digunakan (unavailable).
  • 11. Contoh Implementasi class PrintDemo { public void printCount(){ try { for(int i = 5; i > 0; i--) { System.out.println("Counter --- " + i ); } } catch (Exception e) { System.out.println("Thread interrupted."); } } } ...
  • 12. Contoh Implementasi class ThreadDemo extends Thread { private Thread t; private String threadName; PrintDemo PD; ThreadDemo( String name, PrintDemo pd){ threadName = name; PD = pd; } public void run() { synchronized(PD) { PD.printCount(); } System.out.println("Thread " + threadName + " exiting."); } ...
  • 13. Contoh Implementasi public void start () { System.out.println("Starting " + threadName ); if (t == null) { t = new Thread (this, threadName); t.start (); } } } ...
  • 14. Contoh Implementasi public class TestThread { public static void main(String args[]) { PrintDemo PD = new PrintDemo(); ThreadDemo T1 = new ThreadDemo( "Thread - 1 ", PD ); ThreadDemo T2 = new ThreadDemo( "Thread - 2 ", PD ); T1.start(); T2.start(); // wait for threads to end try { T1.join(); T2.join(); } catch( Exception e) { System.out.println("Interrupted"); } } }