5/04/2010 01:15:00 PM
Muhammad Wahyu Rinaldy Bin Salim Musthofabnu Rusy Al- Imam Maliki As- Syafi'i
Java adalah bahasa pemrograman yang telah menerapkan
multithreading. Oleh karena itu, diperlukan suatu sistem yang dapat mensinkronisasi
thread-thread tersebut.
Java Virtual Machine memakai monitor untuk sinkronisasi
thread.Monitor JVM mendukung dua jenis sinkronisasi yaitu:
- Mutual Exclusion . Seperti pada monitor biasa, monitor mengatur thread-thread yang berbagi resource agar dapat bekerja sendiri-sendiri dengan baik tanpa ada yang saling menggangu.Pada umumnya pengaturan ini ditujukan untuk thread-thread yang saling berbagi resource, sehingga thread-thread yang tidak berbagi resource dapat dibiarkan bekerja sendiri. Akan tetapi, dalam JVM thread dengan prioritas lebih tinggi akan mendominasi thread dengan prioritas rendah sehingga CPU dapat dimonopoli oleh thread dengan prioritas tinggi dan thread dengan prioritas rendah tidak mendapatkann CPU time. Untuk mengatasi hal ini digunakanlah monitor. Secara umum monitor digunakan untuk melindungi akses terhadap resource yang ada di dalamnya.
- Cooperation . Cooperation berarti membantu beberapa thread untuk bekerjasama mencapai tujuannya. Cooperation berperan terutama ketika suatu thread menginginkan resource dalam keadaan tertentu dan thread lain bertanggung jawab untuk membuat resource tersebut menjadi seperti yang diinginkan oleh thread pertama.Dalam JVM, semua object dan class diasosiasikan dengan monitor (object monitor dan class monitor). Untuk object, monitor melindungi variabel dari instansiasi object tersebut, untuk class, monitor melindungi class variable.Untuk mengimplementasikan mutual exclusion, JVM mengasosiasikan
lock
untuk setiap object dan class. Jika suatu thread mendapatkan lock
-nya, thread lain tidak akan bisa mengambil lock
tersebut sebelum thread itu melepaskan lock
-nya (suatu thread yang mendapatkan lock
-nya mendapat akses untuk menggunakan monitor). Hal inilah yang disebut dengan object locking.
Ilustrasi monitor Java:
Cara penggunaan monitor java
- Synchronized Statements . Untuk membuat sebuah synchronized statement, gunakan keyword
synchronized
dengan ekspresi yang me- refer ke suatu object contoh:
void reverseOrder()
{
synchronized(this)
{
/*ekspresi method*/
}
}
- 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:
-
void wait()
. thread yang memanggil method ini akan mesuk ke waiting queue. Thread tersebut akan menunggu sampai ada thread lain yang memanggil method notify()
.
-
void wait(long timeout)
dan void wait(long 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.
-
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.
-
void notifyAll()
. Mirip seperti notify()
, tetapi yang dibangunkan adalah semua thread yang berada di waiting queue
No Response to "Monitor Java"
Post a Comment