"Merhaba, Amigo!"

"Önceki derslerimde bazen 'mutex' ve 'monitor' kelimelerini kullandım, şimdi bunların ne anlama geldiğini anlatmanın zamanı geldi."

"Can kulağı ile dinliyorum."

"Bir muteks , dizileri/işlemleri senkronize etmek için özel bir nesnedir. İki olası durumu vardır: meşgul ve serbest. Basitçe söylemek gerekirse, bir muteks, iki değeri olabilen bir boole değişkenidir: meşgul (doğru) ve serbest (yanlış).

"Bir iş parçacığı bir nesnenin sahipliğini almak istediğinde, nesnenin muteksini meşgul olarak işaretler. Ve nesneyle çalışmayı bitirdiğinde muteksini serbest olarak işaretler."

"Başka bir deyişle, bir muteks, kapıdaki 'meşgul/serbest' işareti gibidir, öyle mi?"

"Evet. Ve böyle bir muteks, Java'daki her nesneyle ilişkilendirilir. Mutekse yalnızca Java makinesinin doğrudan erişimi vardır. Programcıdan gizlenmiştir."

"O halde nasıl kullanacağız?"

"Java'da, bir monitör aracılığıyla bir muteks ile çalışabiliriz."

"Monitör, bir muteksin üzerine yerleştirilmiş özel bir mekanizmadır (kod parçası). Muteks ile uygun etkileşimi garanti eder. Bir nesneyi meşgul olarak işaretlemek yeterli değildir. Yine de diğer iş parçacıklarının bunu denemediğinden emin olmak gerekir. meşgul nesneyi kullan."

"Java'da monitörler, senkronize edilmiş anahtar sözcük kullanılarak uygulanır."

"Senkronize bir blok yazdığınızda, Java derleyicisi onu üç parça kodla değiştirir:"

1) Senkronize bloğun başına, muteksi meşgul olarak işaretleyen kod eklenir.

2)  Senkronize bloğun sonuna, muteksi serbest olarak işaretleyen kod eklenir.

3)  Senkronize bloktan önce, muteks meşgulse, iş parçacığının muteks bırakılana kadar beklemesine neden olan kod eklenir.

"İşte kabaca nasıl çalıştığı:"

kod Nasıl çalışır Tanım
synchronized(object)
{

object.doJob();

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

object.mutex = true;

object.doJob();

object.mutex = false;

Muteks meşgul olduğu sürece iş parçacığı uykudadır
(muteks serbest bırakıldığında döngüden çıkarız). Muteksi meşgul olarak işaretleyin.

doTask();'ı yürütün;

Muteksi serbest olarak işaretle

"Gerçekte, oradaki mantık farklı ve daha karmaşık. Ama bunlar sadece ayrıntılar."

"Ayrıntıları alabilir miyim?"

"Nasıl düzgün kullanılacağını öğrenene kadar, ayrıntılara takılmanın bir anlamı yok."

"Birkaç seviye önce sana geçiş oklarıyla birlikte tüm zincir durumlarının bir listesini ve bu durumu etkileyen yöntemlerin bir listesini vermiştim. Çok şey hatırlıyor musun?"

"Pek değil. Sadece her şeyi çok çabuk unutuyorum..."

"Ne kadar az pratik yaparsanız, teoriden o kadar az yararlanırsınız."

"40. Seviyeye geldiğinizde, tüm bunları nasıl kullanacağınızı öğreneceksiniz ve ben de tüm bunların gerçekte nasıl çalıştığını açıklayacağım. Bu arada, hepsini doğru şekilde kullanmayı öğrenin. Anladınız mı?"

"Evet, teşekkür ederim Ellie."