"Hai, Amigo!"

"Dalam pelajaran saya sebelumnya, saya terkadang menggunakan kata 'mutex' dan 'monitor', sekarang saatnya memberi tahu Anda apa artinya."

"Aku mendengarkan."

" Mutex adalah objek khusus untuk menyinkronkan utas/proses. Ia memiliki dua status yang mungkin: sibuk dan bebas. Sederhananya, mutex adalah variabel boolean yang dapat memiliki dua nilai: sibuk (benar) dan bebas (salah)."

"Ketika sebuah utas ingin mengambil kepemilikan suatu objek, itu menandai mutex objek itu sebagai sibuk. Dan ketika selesai bekerja dengan objek itu, itu menandai mutexnya sebagai bebas."

"Dengan kata lain, mutex itu seperti tanda 'sibuk/bebas' di pintu?"

"Ya. Dan mutex seperti itu diasosiasikan dengan setiap objek di Java. Hanya mesin Java yang memiliki akses langsung ke mutex. Itu tersembunyi dari pemrogram."

"Lalu bagaimana kita menggunakannya?"

"Di Jawa, kita bisa bekerja dengan mutex melalui monitor."

"Monitor adalah mekanisme khusus (sepotong kode) berlapis di atas mutex. Ini menjamin interaksi yang tepat dengan mutex. Tidaklah cukup untuk menandai objek sebagai sibuk. Masih diperlukan untuk memastikan bahwa utas lain tidak mencoba untuk gunakan objek yang sibuk."

"Di Jawa, monitor diimplementasikan menggunakan kata kunci yang disinkronkan."

"Saat Anda menulis blok tersinkronisasi, kompiler Java menggantinya dengan tiga kode:"

1) Pada awal blok yang disinkronkan, ditambahkan kode yang menandai mutex sebagai sibuk.

2)  Di akhir blok yang disinkronkan, ditambahkan kode yang menandai mutex sebagai gratis.

3)  Sebelum blok yang disinkronkan, kode ditambahkan yang, jika mutex sibuk, menyebabkan utas menunggu hingga mutex dilepaskan.

"Begini kira-kira cara kerjanya:"

Kode Bagaimana itu bekerja Keterangan
synchronized(object)
{

object.doJob();

}
while (object.mutex)
Thread.sleep(1);

object.mutex = true;

object.doJob();

object.mutex = false;

Utas tidur selama mutex sibuk
(kami keluar dari loop saat mutex dilepaskan). Tandai mutex sebagai sibuk.

Jalankan doTask();

Tandai mutex sebagai gratis

"Kenyataannya, logikanya berbeda dan lebih rumit. Tapi ini hanya detail."

"Bisakah saya memiliki detailnya?"

"Sampai kamu belajar bagaimana menggunakannya dengan benar, tidak ada gunanya terjerat dalam detailnya."

"Beberapa level yang lalu saya memberi Anda daftar semua status utas dengan panah transisi dan daftar metode yang memengaruhi status ini. Apakah Anda ingat banyak?"

"Tidak juga. Aku hanya melupakan semuanya begitu cepat…"

"Semakin sedikit latihan yang Anda lakukan, semakin sedikit Anda mendapat manfaat dari teori."

"Pada Level 40, kamu akan belajar bagaimana menggunakan semua ini, dan aku akan menjelaskan bagaimana sebenarnya semua ini bekerja. Sementara itu, belajarlah untuk menggunakan semuanya dengan benar. Mengerti?"

"Ya, terima kasih, Ellie."