"வணக்கம், அமிகோ!"

"எனது முந்தைய பாடங்களில், நான் சில நேரங்களில் 'mutex' மற்றும் 'மானிட்டர்' என்ற வார்த்தைகளைப் பயன்படுத்தினேன், இப்போது அவை என்னவென்று உங்களுக்குச் சொல்லும் நேரம் இது."

"நான் எல்லாம் காதுகள்."

"ஒரு மியூடெக்ஸ் என்பது நூல்கள்/செயல்முறைகளை ஒத்திசைப்பதற்கான ஒரு சிறப்புப் பொருளாகும். இது இரண்டு சாத்தியமான நிலைகளைக் கொண்டுள்ளது: பிஸி மற்றும் இலவசம். எளிமையாகச் சொன்னால், மியூடெக்ஸ் என்பது பூலியன் மாறி ஆகும், இது இரண்டு மதிப்புகளைக் கொண்டிருக்கலாம்: பிஸி (உண்மை) மற்றும் இலவசம் (தவறு)."

"ஒரு நூல் ஒரு பொருளின் உரிமையைப் பெற விரும்பினால், அது பொருளின் மியூடெக்ஸை பிஸியாகக் குறிக்கிறது. மேலும் அது பொருளுடன் வேலை செய்து முடித்ததும், அது அதன் மியூடெக்ஸை இலவசமாகக் குறிக்கிறது."

"வேறு வார்த்தைகளில் கூறுவதானால், மியூடெக்ஸ் என்பது கதவில் இருக்கும் 'பிஸி/இலவச' அடையாளம் போன்றதா?"

"ஆமாம். மேலும் இதுபோன்ற ஒரு மியூடெக்ஸ் ஜாவாவில் உள்ள ஒவ்வொரு பொருளுடனும் தொடர்புடையது. ஜாவா இயந்திரம் மட்டுமே மியூடெக்ஸை நேரடியாக அணுகும். இது புரோகிராமரிடம் இருந்து மறைக்கப்பட்டுள்ளது."

"அப்புறம் அதை எப்படி பயன்படுத்துவது?"

"ஜாவாவில், நாம் ஒரு மானிட்டர் மூலம் ஒரு மியூடெக்ஸ் மூலம் வேலை செய்யலாம்."

"ஒரு மானிட்டர் என்பது ஒரு மியூடெக்ஸின் மேல் அடுக்கப்பட்ட ஒரு சிறப்பு பொறிமுறை (குறியீடு துண்டு) ஆகும். இது மியூடெக்ஸுடன் சரியான தொடர்புக்கு உத்தரவாதம் அளிக்கிறது. ஒரு பொருளை பிஸியாகக் குறிப்பது போதாது. மற்ற த்ரெட்கள் முயற்சி செய்யாததை உறுதிப்படுத்துவது இன்னும் அவசியம். பிஸியான பொருளைப் பயன்படுத்தவும்."

"ஜாவாவில், மானிட்டர்கள் ஒத்திசைக்கப்பட்ட முக்கிய சொல்லைப் பயன்படுத்தி செயல்படுத்தப்படுகின்றன."

"நீங்கள் ஒரு ஒத்திசைக்கப்பட்ட தொகுதியை எழுதும்போது, ​​ஜாவா கம்பைலர் அதை மூன்று குறியீடுகளுடன் மாற்றுகிறது:"

1) ஒத்திசைக்கப்பட்ட தொகுதியின் தொடக்கத்தில், மியூடெக்ஸை பிஸியாகக் குறிக்கும் குறியீடு சேர்க்கப்படுகிறது.

2)  ஒத்திசைக்கப்பட்ட தொகுதியின் முடிவில், மியூடெக்ஸை இலவசமாகக் குறிக்கும் குறியீடு சேர்க்கப்படுகிறது.

3)  ஒத்திசைக்கப்பட்ட தொகுதிக்கு முன், குறியீடு சேர்க்கப்படும், இது மியூடெக்ஸ் பிஸியாக இருந்தால், மியூடெக்ஸ் வெளியிடப்படும் வரை த்ரெட் காத்திருக்கும்.

"தோராயமாக இது எவ்வாறு செயல்படுகிறது என்பது இங்கே:"

குறியீடு எப்படி இது செயல்படுகிறது விளக்கம்
synchronized(object)
{

object.doJob();

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

object.mutex = true;

object.doJob();

object.mutex = false;

மியூடெக்ஸ் பிஸியாக இருக்கும் வரை நூல் தூங்குகிறது
(மியூடெக்ஸ் வெளியிடப்படும் போது நாம் வளையத்திலிருந்து வெளியேறுகிறோம்). மியூடெக்ஸை பிஸியாகக் குறிக்கவும்.

doTask();

மியூடெக்ஸை இலவசம் எனக் குறிக்கவும்

"உண்மையில், அங்குள்ள தர்க்கம் வேறுபட்டது மற்றும் மிகவும் சிக்கலானது. ஆனால் இவை விவரங்கள் மட்டுமே."

"எனக்கு விவரம் கிடைக்குமா?"

"அதை எவ்வாறு சரியாகப் பயன்படுத்துவது என்பதை நீங்கள் கற்றுக் கொள்ளும் வரை, விவரங்களில் சிக்குவதில் எந்த அர்த்தமும் இல்லை."

"இரண்டு நிலைகளுக்குப் பின், மாறுதல் அம்புகளைக் கொண்ட அனைத்து நூல் நிலைகளின் பட்டியலையும், இந்த நிலையைப் பாதிக்கும் முறைகளின் பட்டியலையும் நான் உங்களுக்கு வழங்கினேன். உங்களுக்கு அதிகம் நினைவிருக்கிறதா?"

"உண்மையில் இல்லை. நான் எல்லாவற்றையும் சீக்கிரமாக மறந்து விடுகிறேன்..."

"நீங்கள் குறைவாக பயிற்சி செய்கிறீர்கள், கோட்பாட்டிலிருந்து நீங்கள் குறைவாகப் பயனடைகிறீர்கள்."

"நிலை 40 இல், இவை அனைத்தையும் எவ்வாறு பயன்படுத்துவது என்பதை நீங்கள் கற்றுக் கொள்வீர்கள், இவை அனைத்தும் உண்மையில் எவ்வாறு செயல்படுகின்றன என்பதை நான் விளக்குகிறேன். இதற்கிடையில், எல்லாவற்றையும் சரியாகப் பயன்படுத்த கற்றுக்கொள்ளுங்கள். புரிந்ததா?"

"ஆம், நன்றி, எல்லி."