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

"புதிய அனைத்தும் நாம் மறந்துவிட்ட பழைய ஒன்றுதான். இன்று நான் இழைகளை நிறுத்துவது பற்றி பேசுகிறேன். குறுக்கீடு() முறை எவ்வாறு செயல்படுகிறது என்பதை நீங்கள் ஏற்கனவே மறந்துவிட்டீர்கள் என்று நம்புகிறேன்."

"ஆம், எல்லி, நான் அதை முற்றிலும் மறந்துவிட்டேன்."

"அருமை. பிறகு நான் உங்களுக்கு நினைவூட்டுகிறேன்."

"ஜாவாவில், யாரேனும் ஒருவர் இயங்கும் நூலை நிறுத்த விரும்பினால், அவர் அதைத் தொடருக்கு சமிக்ஞை செய்யலாம். இதைச் செய்ய, நீங்கள் Thread ஆப்ஜெக்ட்டின் மறைக்கப்பட்ட isInterrupted மாறியை true ஆக அமைக்க வேண்டும்."

"ஒவ்வொரு த்ரெட்டிலும் ஒரு குறுக்கீடு() முறை உள்ளது, இது இந்தக் கொடியை அமைக்கப் பயன்படுகிறது. குறுக்கீடு () முறை என்று அழைக்கப்படும் போது, ​​த்ரெட் பொருளின் உள்ளே உள்ள isInterrupted மாறி உண்மையாக அமைக்கப்படும்."

"மேலும் ஒரு நூலில் Thread.sleep() அல்லது join() முறை அழைக்கப்படும்போது, ​​தற்போதைய தொடரிழைக்கு isInterrupted கொடி அமைக்கப்பட்டுள்ளதா என்பதை இந்த முறை சரிபார்க்கிறது. இந்தக் கொடி அமைக்கப்பட்டால் (isInterrupted மாறி உண்மைக்கு சமம்), பின்னர் முறைகள் ஒரு குறுக்கீடு விதிவிலக்கை எறியுங்கள் ."

"இதோ, நான் உங்களுக்கு ஒரு பழைய உதாரணத்தை நினைவூட்டுகிறேன்:"

குறியீடு விளக்கம்
class Clock implements Runnable
{
public void run()
{
Thread current = Thread.currentThread();

while (!current.isInterrupted())
{
Thread.sleep(1000);
System.out.println("Tik");
}
}
}
கடிகாரத்தின் இயக்க முறையானது தற்போதைய தொடருக்கான த்ரெட் பொருளைப் பெறுகிறது.

தற்போதைய த்ரெட்டின் isInterrupt மாறி தவறானதாக இருக்கும் வரை Clock class ஆனது "டிக்" என்ற வார்த்தையை கன்சோலில் ஒரு நொடிக்கு ஒரு முறை எழுதும்.

isInterrupt உண்மையாகும்போது, ​​ரன் முறை முடிவடைகிறது.

public static void main(String[] args)
{
Clock clock = new Clock();
Thread clockThread = new Thread(clock);
clockThread.start();

Thread.sleep(10000);
clockThread.interrupt();
}
பிரதான நூல் ஒரு குழந்தை நூலை (கடிகாரம்) தொடங்குகிறது, அது எப்போதும் இயங்க வேண்டும்.

10 வினாடிகள் காத்திருந்து , குறுக்கீடு முறையை அழைப்பதன் மூலம் பணியை ரத்துசெய்யவும்.

முக்கிய நூல் அதன் வேலையை முடிக்கிறது.

கடிகார நூல் அதன் வேலையை முடிக்கிறது.

"இங்கே நாம் ரன் முறையில் ஒரு எல்லையற்ற சுழற்சியின் ஒரு பகுதியாக தூக்க முறையைப் பயன்படுத்துகிறோம் . லூப்பில், isInterrupt மாறி தானாகவே சரிபார்க்கப்படும். ஒரு நூல் தூக்க முறையை அழைத்தால், அந்தத் தொடருக்கு isInterrupt உண்மையா என்பதை முதலில் அந்த முறை சரிபார்க்கிறது . தூக்கம் முறை என்று ஒன்று ) .

"ஆனால் இந்த எடுத்துக்காட்டில், லூப்பின் நிலையில் உள்ள isInterrupted மாறியை நாங்கள் தொடர்ந்து சரிபார்க்கிறோம்."

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

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

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

" மூன்றாவது , ஒரு விதிவிலக்கை எறிவது isInterrupted காசோலையை மாற்றாது. இது ஒரு வசதியான கூடுதலாகும். எறியப்பட்ட விதிவிலக்கு, ரன் முறையிலேயே அழைப்பு அடுக்கை விரைவாக அவிழ்க்க உங்களை அனுமதிக்கிறது . "

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

" ஐந்தாவது , கூடுதல் சரிபார்ப்பு செயல்திறனைக் குறைக்காது. தூக்க முறையை அழைப்பதன் மூலம் நூல் எதையும் செய்யக்கூடாது (தூங்குவதைத் தவிர), எனவே கூடுதல் வேலை யாரையும் தொந்தரவு செய்யாது."

"இதைத்தான் நீங்கள் முன்பு சொன்னீர்கள்."

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

"நிச்சயம்."

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

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

"ஆனால் குறுக்கீடு விதிவிலக்கு பற்றி என்ன?"

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

"மற்றொரு விஷயம் என்னவென்றால், நூல்கள் ஏற்கனவே மிகவும் குறைந்த அளவிலான நிரலாக்கமாகக் கருதப்படுகின்றன. ஆனால் அடுத்த முறை அதைப் பற்றி நான் உங்களுக்குச் சொல்கிறேன்."

"நீங்கள் எல்லி அல்ல - நீங்கள் ஷெஹராசாட்!"

"அப்படியானால், அமிகோ! தற்போதைய பாடத்தில் எல்லாம் தெளிவாக இருக்கிறதா?"

"ஆமாம்."

"சரி நல்லது."