Mutual Exclusion. Sesuai dengan prinsip mutual exclusion, jika suatu thread sedang berada

Cara penggunaan monitor java 1. Synchronized Statements. Untuk membuat sebuah synchronized statement, gunakan keyword synchronized dengan ekspresi yang me-refer ke suatu object contoh: void reverseOrder { synchronizedthis { ekspresi method } }

2. Synchronized Methods.

untuk membuat suatu synchronized methods, cukup dengan menambahkan keyword synchronized di depan nama method tersebut pada deklarasinya contoh: synchronized void reverseOrder { ekspresi method } Seperti halnya pada monitor biasa, monitor JVM juga menyediakan method-method tambahan agar programmer dapat dengan leluasa menyelesaikan masalah sinkronisasi yang dihadapinya. Method-method tersebut adalah: a. void wait . thread yang memanggil method ini akan mesuk ke waiting queue. Thread tersebut akan menunggu sampai ada thread lain yang memanggil method notify . b. void waitlong timeout dan void waitlong timeout, int nanos . Mirip seperti method wait , bedanya ketika timeout dalam milisekon habis dan tidak ada thread lain yang memanggil method notify , thread dibangunkan oleh JVM. c. void notify . Membangunkan satu thread yang ada di waiting queue yang dipilih secara random. Jika tidak ada thread di waiting queue, maka tidak akan terjadi apa-apa. d. void notifyAll . Mirip seperti notify , tetapi yang dibangunkan adalah semua thread yang berada di waiting queue.

20.7. Rangkuman

• Instruksi TestAndSet . instruksi atomik yang dapat digunakan untuk menangani masalah critical section. • Semafor. sebuah variabel yang hanya dapat diakses oleh dua buah operasi standar yaitu increment dan decrement. Dua buah jenis semafor, yaitu Binary Semaphore dan Counting Semaphore. Semafor berfungsi untuk menangani masalah critical section, mengatur alokasi resource, dan sinkronisasi antarproses. • Monitor. digunakan untuk menangani masalah yang muncul karena pemakaian semafor. Monitor menjamin mutual exclusion. Untuk menangani masalah sinkronisasi yang lebih rumit monitor menyediakan condition variable. • JVM. mengimplementasikan monitor. Monitor JVM bekerja dengan object locking dan method-method wait serta notify . Monitor JVM dapat digunakan dengan menggunakan keyword synchronized. Rujukan [Christopher2001] Thomas W. Christopher dan George K. Thiruvathukal. 2001. High Performance Java Platform Computing. First Edition. Prentice Hall Ptr. 142 [Downey2005] Allen B. Downey. 2005. The Little Book of Semaphores. Second Edition. Green Tea Press. [Silberschatz2005] Avi Silberschatz, Peter Galvin, dan Grag Gagne. 2005. Operating Systems Concepts. Seventh Edition. John Wiley Sons. [Venners2000] Bill Venners. 2000. Inside the Java Virtual Machine. Second Edition. McGraw-Hill Companies. [WEBJAVA] Sun Microsystems. 1995. Synchronized methods The Java TM ; Tutorials Essential Classes Concurrency http:java.sun.comdocsbookstutorialessentialconcurrencysyncmeth.html . Diakses 8 Maret 2007. [WEBJAVA] Sun Microsystems. 1995. Thread Interference The Java TM ; Tutorials Essential Classes Concurrency http:java.sun.comdocsbookstutorialessentialconcurrencyinterfere.html . Diakses 8 Maret 2007. [WEBWIKI] Wikipedia. 2007. Test-and-set - Wikipedia, the free encyclopedia http:en.wikipedia.orgwikiTest-and-set . Diakses 8 Maret 2007. 143