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

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

ஆனால் திடீரென்று பயனர் மனம் மாறுகிறார். அவர் கோப்பைப் பதிவிறக்க விரும்பவில்லை. ஒரு வேலையை ரத்து செய்துவிட்டு நூலை நிறுத்துவது எப்படி?

"ஆமாம், எப்படி சொல்லுங்க?"

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

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

"அதற்கு சிறந்த வழி என்ன?"

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

குறியீடு விளக்கம்
class Clock implements Runnable
{
public void run()
{
while (true)
{
Thread.sleep(1000);
System.out.println("Tick");

if (!ClockManager.isClockRun)
return;
}
}
}

கடிகார வகுப்பு கன்சோலில் ஒரு வினாடிக்கு ஒருமுறை எப்போதும் "டிக்" எழுதுகிறது

ClockManager.isClockRun தவறு எனில், இயக்க முறை முடிவடையும்.

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

Thread.sleep(10000);
isClockRun = false;
}

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

10 வினாடிகள் காத்திருந்து கடிகாரம் முடிவதற்கான சமிக்ஞையை கொடுங்கள்.

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

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

"எங்களிடம் பல நூல்கள் இருந்தால் என்ன, பிறகு என்ன?"

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

குறியீடு விளக்கம்
class Clock implements Runnable
{
private boolean isCancel = false;

public void cancel()
{
this.isCancel = true;
}

public void run()
{
while (!isCancel)
{
Thread.sleep(1000);
System.out.println("Tick");
}
}
}
isCancel தவறானதாக இருக்கும் வரை கடிகார வகுப்பு "டிக்" என்ற வார்த்தையை கன்சோலில் ஒரு நொடிக்கு ஒருமுறை எழுதும் .

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

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

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

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

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

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

"இதை மனதில் வைத்துக் கொள்கிறேன். நன்றி, எல்லி."