థ్రెడ్ జీవిత చక్రం మరియు థ్రెడ్ స్టేట్స్ - 1

"హాయ్, అమిగో!"

"మేము కొత్త అంశాన్ని ప్రారంభించబోతున్నాం: థ్రెడ్‌లు."

"ప్రారంభించండి. ఈ రోజు మనం థ్రెడ్ నడుస్తున్నప్పుడు థ్రెడ్ ఆబ్జెక్ట్ గుండా వెళ్ళే (లేదా గుండా వెళ్ళే) స్థితులను పరిశీలిస్తాము."

"అమిగో, మీరు ప్రస్తుతం ఎన్ని రాష్ట్రాలకు పేరు పెట్టగలరు?"

రెండు ముఖ్యమైనది."

"మీరు చెప్పింది నిజమే-అటువంటి వ్యత్యాసం ఉంది. ఈ రాష్ట్రాలు కొత్తవి మరియు నడుస్తున్నాయి అని పిలుస్తారు , కానీ ఇది ప్రారంభం మాత్రమే."

"మొదట, ఏదో ఒక సమయంలో థ్రెడ్ రన్నింగ్ పూర్తి అవుతుంది, అంటే థ్రెడ్ ఆబ్జెక్ట్ ఉన్న పరిస్థితి ఉండవచ్చు, కానీ థ్రెడ్ కొత్త లేదా నడుస్తున్న స్థితిలో లేదు. "థ్రెడ్ రన్నింగ్ పూర్తి చేసిన ఈ స్థితిని అంటారు. రద్దు చేయబడింది ."

"కానీ ఇంకా చాలా ఉన్నాయి. ఏ సమయంలోనైనా నిజానికి ఒక థ్రెడ్ మాత్రమే నడుస్తోందని మర్చిపోవద్దు. ఏకకాలంలో పని చేసినట్లుగా కనిపించేది వాస్తవానికి ప్రాసెసర్ నిరంతరం థ్రెడ్ నుండి థ్రెడ్‌కు దూకడం. థ్రెడ్ కనిపించినప్పుడు దాని కోసం ప్రత్యేక రాష్ట్రం ఉంది. నడుస్తున్నది, కానీ వాస్తవానికి దాని వంతు కోసం వేచి ఉంది: దీనిని రన్-టు-రన్ అని పిలుస్తారు . ఒక థ్రెడ్ పని చేస్తున్నప్పుడు, ఇది నిరంతరం రన్నింగ్ నుండి సిద్ధంగాకి మారుతుంది , ఆపై మళ్లీ యాక్టివ్‌గా మారినప్పుడు మళ్లీ రన్‌కి మారుతుంది."

" ప్రారంభ () పద్ధతిని పిలిచిన వెంటనే , థ్రెడ్‌కు అమలు చేయడానికి సిద్ధంగా ఉన్న స్థితి కేటాయించబడుతుంది మరియు JVM మధ్య మారే థ్రెడ్‌ల షేర్డ్ లిస్ట్‌లో ఉంచబడుతుంది."

"అది చాలా కష్టం కాదు. అది పరుగు ప్రారంభించే ముందు, కొత్త స్థితిని కలిగి ఉంటుంది . అది పూర్తయిన తర్వాత , అది రద్దు చేయబడింది ."

"మీ సంక్షిప్తత అద్భుతంగా ఉంది, కానీ మీరు చెప్పింది నిజమే."

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

"రాష్ట్రాలతో ఈ పరిస్థితి ఎలా ఉందో ఇక్కడ ఉంది:"

థ్రెడ్ లైఫ్ సైకిల్ మరియు థ్రెడ్ స్టేట్స్ - 2

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

మేము మరొక థ్రెడ్ ఆబ్జెక్ట్‌పై జాయిన్() అని పిలిచినప్పుడు, అది మన థ్రెడ్ దానిని «చేరిన» లాగా ఉంటుంది, కానీ వాస్తవానికి అది ఇతర థ్రెడ్ పూర్తయ్యే వరకు వేచి ఉంటుంది.

"అదనంగా, వేచి ఉండే () పద్ధతి కూడా ఉంది (నిరీక్షణ/నోటిఫై/అన్ని త్రయం పద్ధతుల నుండి), ఇది థ్రెడ్‌ను పిలిచినప్పుడు వేచి ఉండే స్థితికి మారుస్తుంది . "

"ఓహో."

"ఒక్క నిమిషం ఆగండి! ఇంకా ఎక్కువ ఉంది. ఉదాహరణకు, స్లీప్ మెథడ్‌ని పిలవడం ద్వారా ఒక థ్రెడ్ నిద్రపోతుంది. దీని కోసం ఒక ప్రత్యేక రాష్ట్రం కూడా ఉంది. దీనిని « టైమ్డ్ వెయిటింగ్ » అంటారు. « టైమ్డ్ వెయిటింగ్ » అంటే థ్రెడ్ దేనికోసం వేచి ఉంది పరిమిత సమయం. మీరు వెయిట్(టైమ్ అవుట్) లేదా జాయిన్(టైమ్ అవుట్) వంటి పరామితితో నిరీక్షణ పద్ధతిని కాల్ చేస్తే, థ్రెడ్ టైమ్-వెయిటింగ్ స్టేట్‌లోకి ప్రవేశిస్తుంది."

"పూర్తి రేఖాచిత్రం ఇక్కడ ఉంది:"

థ్రెడ్ లైఫ్ సైకిల్ మరియు థ్రెడ్ స్టేట్స్ - 3

"హ్మ్. అంతేనా? లేక ఇంకో 10 ఆసక్తికరమైన రాష్ట్రాలు ఉన్నాయా?"

"ప్రస్తుతానికి, అంతే."

"ఆచరణలో, మీరు మొదటి రేఖాచిత్రాన్ని గుర్తుంచుకోగలరు. ఇది సరళమైనది. కానీ రెండవది మరింత ఖచ్చితమైనది."

"విచిత్రమేమిటంటే, ఇంటర్నెట్‌లో చాలా థ్రెడ్ స్టేట్ రేఖాచిత్రాలు ఉన్నాయి మరియు అవన్నీ విభిన్నంగా ఉన్నాయి."

"అందుకే నేను మీకు ఈ రేఖాచిత్రాన్ని ఇచ్చాను-ఇది చాలా పూర్తి మరియు సరైనది."

"ఈ రేఖాచిత్రంలో, సిద్ధంగా ఉన్న మరియు రన్నింగ్ స్టేట్‌లను రన్నబుల్ అనే ఒకే బ్లాక్‌లో కలుపుతారు. ఎందుకో తెలుసా?"

"లేదు. నేను అలాంటిది చూడటం ఇదే మొదటిసారి."

" థ్రెడ్ క్లాస్‌లో స్టేట్ అనే ఇన్నర్ క్లాస్ ఉంది , అలాగే పబ్లిక్ స్టేట్ గెట్‌స్టేట్() పద్ధతి కూడా ఉంది."

ఉదాహరణ
public enum State
{
 NEW,
 RUNNABLE,
 BLOCKED,
 WAITING,
 TIMED_WAITING,
 TERMINATED;
}

"మీరు థ్రెడ్ ఆబ్జెక్ట్‌పై గెట్‌స్టేట్ () పద్ధతిని ఎల్లప్పుడూ కాల్ చేయవచ్చు మరియు దాని ప్రస్తుత స్థితిని కనుగొనవచ్చు. మరియు, వాస్తవానికి, ఇది స్టేట్ ఎనమ్ విలువలలో ఒకటిగా ఉంటుంది."

"నేను చూస్తున్నాను. కాబట్టి, నిజమైన రాష్ట్రాలు JVM లోపల ఉన్నాయి, కానీ మీరు State getState() పద్ధతిని ఉపయోగించి Java కోడ్ ద్వారా యాక్సెస్ చేయగల స్టేట్‌లు కూడా ఉన్నాయి."

"మరియు నేను దానిని ఏ పరిస్థితులలో ఉపయోగిస్తాను?"

"చాలా మటుకు, ఎప్పుడూ."

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

"ప్లస్, ఇంటర్వ్యూల సమయంలో థ్రెడ్ స్టేట్స్ గురించి అడగడం యజమానులు ఇష్టపడతారు."