"హలో, అమిగో! ఎల్లీ యొక్క రద్దు ఆలోచన అద్భుతమైనదని మీరు అంగీకరించాలి."
"అవును."
"వాస్తవానికి, థ్రెడ్ క్లాస్లో ఇలాంటిదేదో ఉంది . వేరియబుల్ను మాత్రమే isCancel అని పిలవరు . దీనిని isInterrupt అంటారు . మరియు థ్రెడ్ను ఆపడానికి ఉపయోగించే పద్ధతి రద్దు కాదు() . ఇది అంతరాయం() ."
"నిజంగానా?"
"అవును. దీన్ని చూడండి:"
కోడ్ | వివరణ |
---|---|
|
అనేక థ్రెడ్లు ఒకే క్లాక్ ఆబ్జెక్ట్పై రన్ పద్ధతిని కాల్ చేయగలవు కాబట్టి, ప్రస్తుత థ్రెడ్ కోసం థ్రెడ్ ఆబ్జెక్ట్ని మేము పొందుతాము .
ప్రస్తుత థ్రెడ్ యొక్క isInterrupt వేరియబుల్ తప్పుగా ఉన్నంత వరకు క్లాక్ క్లాస్ కన్సోల్కు "టిక్" అనే పదాన్ని సెకనుకు ఒకసారి వ్రాస్తుంది . isInterrupt నిజం అయినప్పుడు , రన్ పద్ధతి ముగుస్తుంది . |
|
ప్రధాన థ్రెడ్ చైల్డ్ థ్రెడ్ (గడియారం)ని ప్రారంభిస్తుంది, అది ఎప్పటికీ నడుస్తుంది.
10 సెకన్లు వేచి ఉండి, అంతరాయ పద్ధతికి కాల్ చేయడం ద్వారా టాస్క్ను రద్దు చేయండి . ప్రధాన థ్రెడ్ దాని పనిని పూర్తి చేస్తుంది. గడియారం థ్రెడ్ దాని పనిని ముగించింది. |
అంతేకాకుండా, రన్ పద్ధతిలో ప్రజలు అంతులేని లూప్లలో ఉపయోగించడానికి ఇష్టపడే స్లీప్ పద్ధతి , స్వయంచాలకంగా isInterrupt వేరియబుల్ని తనిఖీ చేస్తుంది. థ్రెడ్ స్లీప్ మెథడ్ని పిలిస్తే , ఆ థ్రెడ్కు isInterrupt నిజమా కాదా అని మెథడ్ మొదట తనిఖీ చేస్తుంది . ఇది నిజమైతే, పద్ధతి నిద్రపోదు. బదులుగా, ఇది InterruptedException మినహాయింపును అందిస్తుంది.
"ఎందుకు మినహాయింపు ఇవ్వాలి? లూప్లో isCancel()కి బదులుగా isInterrupted()ని ఉంచడం మంచిది కాదా?"
" మొదట , రన్ పద్ధతికి ఎల్లప్పుడూ లూప్ ఉండదు. పద్ధతి ఇతర పద్ధతులకు కొన్ని డజన్ల కాల్లను కలిగి ఉండవచ్చు. అప్పుడు మీరు ప్రతి పద్ధతి కాల్కి ముందు isInterrupted చెక్ని జోడించాలి."
" రెండవది , అనేక విభిన్న చర్యలను కలిగి ఉన్న కొన్ని పద్ధతులు అమలు చేయడానికి చాలా సమయం పట్టవచ్చు."
" మూడవది , ఒక మినహాయింపును విసిరివేయడం అనేది isInterrupted చెక్ని భర్తీ చేయదు. ఇది కేవలం అనుకూలమైన అదనంగా ఉంటుంది. విసిరిన మినహాయింపు కాల్ స్టాక్ను రన్ పద్ధతికి త్వరగా విడదీయడానికి మిమ్మల్ని అనుమతిస్తుంది ."
" నాల్గవది , స్లీప్ పద్ధతి చాలా ఉపయోగించబడుతుంది. ఇది తేలినట్లుగా, ఈ సహాయకరమైన పద్ధతి ఒక అవ్యక్త తనిఖీ ద్వారా మెరుగుపరచబడింది, ఇది తక్కువ ఉపయోగకరంగా ఉండదు. ఇది ఎవరూ ప్రత్యేకంగా చెక్కును జోడించనట్లుగా ఉంది, కానీ అది ఉంది. ఇది చాలా విలువైనది మీరు వేరొకరి కోడ్ని ఉపయోగిస్తున్నారు మరియు చెక్ను మీరే జోడించుకోలేరు."
" ఐదవది , అదనపు తనిఖీ పనితీరు క్షీణించదు. నిద్ర పద్ధతిని కాల్ చేయడం అంటే థ్రెడ్ ఏమీ చేయకూడదని అర్థం (నిద్ర తప్ప), కాబట్టి అదనపు పని ఎవరినీ ఇబ్బంది పెట్టదు."
"అవి తీవ్రమైన వాదనలు."
"మరియు, చివరగా , ఇది ఉంది: మీ అమలు పద్ధతి వేరొకరి కోడ్కు కాల్ చేయవచ్చు—మీకు యాక్సెస్ లేని కోడ్ (సోర్స్ కోడ్ మరియు/లేదా కోడ్ను మార్చడానికి హక్కులు). దీనికి అంతరాయం కలిగించే తనిఖీలు ఉండకపోవచ్చు మరియు అది ఉపయోగించవచ్చు " ప్రయత్నించండి ... క్యాచ్ (మినహాయింపు ఇ) " అన్ని మినహాయింపులను పట్టుకోవడానికి."
థ్రెడ్ ఆగిపోతుందని ఎవరూ హామీ ఇవ్వలేరు. ఒక థ్రెడ్ మాత్రమే తనను తాను ఆపగలదు.
GO TO FULL VERSION