"హలో, అమిగో! మీకు ఇదివరకే ఉన్న ఒక ఆసక్తికరమైన ప్రశ్న ఇదిగో లేదా మీకు త్వరలో వస్తుంది. మీరు నడుస్తున్న థ్రెడ్‌ను ఎలా ఆపాలి? "

వినియోగదారు ప్రోగ్రామ్‌కు «ఇంటర్నెట్ నుండి ఫైల్‌ను డౌన్‌లోడ్ చేయమని' చెప్పారని అనుకుందాం. ప్రధాన థ్రెడ్ ఈ ఉద్యోగం కోసం ప్రత్యేక చైల్డ్ థ్రెడ్‌ను సృష్టిస్తుంది మరియు ఫైల్‌ను డౌన్‌లోడ్ చేయడానికి అవసరమైన అన్ని చర్యలను కలిగి ఉన్న రన్ పద్ధతిని కలిగి ఉన్న వస్తువును పంపుతుంది.

కానీ అకస్మాత్తుగా వినియోగదారు తన మనసు మార్చుకుంటాడు. అతను ఫైల్‌ను డౌన్‌లోడ్ చేయడం ఇష్టం లేదు. మేము ఉద్యోగాన్ని ఎలా రద్దు చేస్తాము మరియు థ్రెడ్‌ను ఎలా ఆపాలి?

"అవును, ఎలా చెప్పు?"

" మేము చేయలేము. ఇది అత్యంత సాధారణ మరియు అత్యంత సరైన సమాధానం. మీరు థ్రెడ్‌ను ఆపలేరు. అది మాత్రమే ఆపగలదు. "

కానీ మీరు ఒక థ్రెడ్‌కి ఒక సంకేతాన్ని పంపవచ్చు, పనిని ఇకపై నిర్వహించాల్సిన అవసరం లేదని మరియు దానిని ముగించాలని ఏదో ఒక విధంగా చెప్పవచ్చు. ప్రధాన పద్ధతి నుండి తిరిగి రావడం ద్వారా ప్రధాన థ్రెడ్ ముగిసినట్లే, రన్ పద్ధతి నుండి తిరిగి రావడం ద్వారా చైల్డ్ థ్రెడ్ ముగుస్తుంది.

"అలా చేయడానికి ఉత్తమ మార్గం ఏమిటి?"

"మీరు బూలియన్ వంటి కొన్ని వేరియబుల్‌ని జోడించవచ్చు. అది నిజమైతే , థ్రెడ్ నడుస్తుంది. అది తప్పు అయితే  , థ్రెడ్ ముగియాలి. ఇలా, ఉదాహరణకు:"

కోడ్ వివరణ
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 సెకన్లు వేచి ఉండి,  రద్దు పద్ధతికి కాల్ చేయడం ద్వారా టాస్క్‌ను రద్దు చేయండి.

ప్రధాన థ్రెడ్ దాని పనిని పూర్తి చేస్తుంది.

గడియారం థ్రెడ్ దాని పనిని ముగించింది.

"నేను దీన్ని గుర్తుంచుకోవాలి. ధన్యవాదాలు, ఎల్లీ."