Apa yang dimaksud dengan monitor dalam pemrograman bersamaan di Jawa?
Ketika saya membaca bahwa "setiap objek telah menghubungkan monitor" apa artinya?
Apakah ini objek khusus?
Apa yang dimaksud dengan monitor dalam pemrograman bersamaan di Jawa?
Ketika saya membaca bahwa "setiap objek telah menghubungkan monitor" apa artinya?
Apakah ini objek khusus?
Jawaban:
Monitor adalah mekanisme untuk mengontrol akses bersamaan ke suatu objek.
Ini memungkinkan Anda untuk melakukan:
Utas 1:
public void a()
{
synchronized(someObject) {
// do something (1)
}
}
Utas 2:
public void b()
{
synchronized(someObject) {
// do something else (2)
}
}
Ini mencegah Thread 1 dan 2 mengakses bagian yang dipantau (disinkronkan) secara bersamaan. Satu akan mulai, dan monitor akan mencegah yang lain mengakses wilayah sebelum yang pertama selesai.
Itu bukan objek khusus. Itu mekanisme sinkronisasi ditempatkan di akar hirarki kelas: java.lang.Object
.
Ada juga wait
dan notify
metode yang juga akan menggunakan monitor objek untuk berkomunikasi di antara berbagai utas.
Class
objek yang sesuai untuk metode statis. Jika Anda sudah memiliki metode1 disinkronkan () dan Anda menyatakan metode2 () disinkronkan, tidak ada monitor baru dibuat dan bahkan memanggil metode baik (pada objek yang sama) akan mencoba untuk mengunci monitor yang sama. Ini sering menangkap pendatang baru.
Monitor adalah entitas yang memiliki set kunci dan set tunggu . Di Jawa, apa pun Object
bisa berfungsi sebagai monitor.
Untuk penjelasan terperinci tentang cara kerja monitor di Jawa, saya sarankan membaca bagian Mekanika Monitor dari Pemrograman Bersamaan di Jawa (tautan sebelumnya menampilkan pratinjau di buku-buku Google, dan bagian itu tersedia untuk dibaca).
Wakes up all threads that are waiting on this object's monitor.
tentang notifyall (), apa yang saya dapatkan adalah objek yang mempertahankan (dengan bantuan entitas / objek internal) apa semua utas menunggu kunci, bahwa entitas / objek internal disebut monitor?
Bahasa Jawa dan sistem runtime mendukung sinkronisasi utas melalui penggunaan monitor.
Monitor dikaitkan dengan item data tertentu (variabel kondisi) dan berfungsi sebagai kunci pada data tersebut. Ketika utas memegang monitor untuk beberapa item data, utas lainnya dikunci dan tidak dapat memeriksa atau memodifikasi data.
http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html#33308
Sebuah mekanisme untuk mengontrol akses ke objek satu per satu
Monitor adalah konstruk sinkronisasi yang memungkinkan utas untuk memiliki pengecualian bersama dan kemampuan untuk menunggu (memblokir) agar kondisi tertentu menjadi kenyataan.
Monitor juga memiliki mekanisme untuk memberi tanda utas lain yang kondisinya telah terpenuhi. Ini adalah entitas yang memiliki set kunci dan set menunggu. Di Jawa, Obyek apa pun dapat berfungsi sebagai monitor.
Di mesin virtual Java, setiap objek dan kelas secara logis dikaitkan dengan monitor. Untuk mengimplementasikan kemampuan pengecualian bersama dari monitor, kunci (terkadang disebut mutex) dikaitkan dengan setiap objek dan kelas. Ini disebut semaphore dalam istilah sistem operasi, mutex adalah semaphore biner.
http://journals.ecs.soton.ac.uk/java/tutorial/java/threads/monitors.html
monitor terkait dengan objek atau anggota data, yang diperoleh ketika anggota data atau objek dimasukkan adalah blok sinkronisasi (bagian kritis) dan lepaskan ketika keluar.