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

ఒక సాధారణ కంప్యూటర్ గేమ్‌ను ఊహించుకోండి, ఉదాహరణకు, ఒక స్పేస్‌షిప్ రేసింగ్ గేమ్. మీరు ఉల్కలు మరియు పెట్రోలింగ్ క్రూయిజర్‌లను తప్పించుకుంటూ కాస్మోస్ యొక్క విస్తారమైన ప్రదేశాలలో ప్రయాణిస్తున్నారు. ఈ అక్రమ రేసుల్లో మీతో పాటు మరో రెండు డజన్ల మంది పాల్గొంటున్నారు.

మీరు అలాంటి ఆట రాయాలని నిర్ణయించుకున్నారనుకుందాం. మీ ప్రోగ్రామ్ ఆదేశాలను (కీబోర్డ్ ఇన్‌పుట్) ట్రాక్ చేయాలి, స్పేస్‌షిప్‌లను తరలించాలి, వాటి పథాలను లెక్కించాలి, ఏవైనా ఘర్షణల యొక్క పరిణామాలను గుర్తించాలి మరియు ఇవన్నీ వినియోగదారు స్క్రీన్‌పై గీయాలి. ఇది చాలా క్లిష్టమైన పని.

పెరుగుతున్న షిప్పింగ్ కంపెనీకి సంబంధించిన ఉదాహరణలో మేము "గొప్ప సంక్లిష్టత సమస్యను" ఎలా పరిష్కరించామో గుర్తుందా?

మేము దానిని స్వతంత్ర విభాగాలుగా విభజించాము మరియు వారు ఎలా పరస్పర చర్య చేయవచ్చో (ప్రామాణికీకరించబడిన) కఠినంగా పేర్కొన్నాము.

"అయితే స్వతంత్ర భాగాలు ఇతర భాగాలతో సమాంతరంగా కొన్ని పనిని చేయవలసి వచ్చినప్పుడు మనం ఏమి చేస్తాము?! ఈ ప్రశ్నకు సమాధానం థ్రెడ్లు . "

ప్రోగ్రామ్‌ను కోడ్ చుట్టూ నడిచే మరియు ఆదేశాలను అమలు చేసే చిన్న రోబోట్‌గా ఊహించుకోవడానికి ప్రయత్నించండి . మొదట, ఇది ఒక లైన్‌లో ఆదేశాన్ని అమలు చేస్తుంది, ఆపై తదుపరిదానికి వెళుతుంది మరియు మొదలైనవి.

"నా మనసులో చూడగలను. పీస్ ఆఫ్ కేక్!"

"చాలా బాగుంది. ఇప్పుడు మీ వద్ద ఈ రోబోలు చాలా ఉన్నాయని ఊహించుకోండి. ఒకటి యూజర్ ఇన్‌పుట్‌ను హ్యాండిల్ చేస్తున్నప్పుడు, రెండవది ఆ ఇన్‌పుట్ ఆధారంగా ఆబ్జెక్ట్‌లను అప్‌డేట్ చేస్తోంది. మూడవది ఈ వస్తువులను స్క్రీన్‌పై ప్రదర్శించడానికి కోడ్‌ను అమలు చేస్తుంది. సెకనుకు చాలా సార్లు, నాల్గవది ఏదైనా ఓడలు ఢీకొన్నాయో లేదో తనిఖీ చేస్తుంది మరియు అవి ఉంటే, తాకిడి ఫలితాలను గణిస్తుంది."

ఈ విధంగా, మేము ప్రోగ్రామ్‌ను స్వతంత్ర భాగాలు/వస్తువులుగా విభజించడమే కాకుండా, ఈ భాగాలు ఒకదానికొకటి స్వతంత్రంగా తమ పనిని నిర్వహించేలా కూడా తయారు చేయవచ్చు. వ్యక్తిగత భాగాల మధ్య తక్కువ పరస్పర చర్య, ప్రోగ్రామ్ తక్కువ సంక్లిష్టంగా ఉంటుంది.

మీరు అక్షరాలను పంపే స్క్రిప్ట్‌తో మేనేజర్‌ని భర్తీ చేయగలిగారని ఊహించండి . మరియు ఇతర కంపెనీ విభాగాలు కూడా మార్పు జరిగినట్లు చెప్పలేకపోయాయి. ఈ విధమైన విషయం 26వ శతాబ్దంలోనే అద్భుతమైన ఫలితాలతో జరిగింది. చాలా మంది మేనేజర్‌లు మరియు టాప్ ఎగ్జిక్యూటివ్‌లు కూడా సగటు సంక్లిష్టతతో కూడిన స్క్రిప్ట్‌తో విజయవంతంగా భర్తీ చేయబడతారు. "ఆఫీస్ ప్లాంక్టన్ యూనియన్" జోక్యం చేసుకున్న తర్వాత మాత్రమే నిర్వాహకుల భారీ తొలగింపులు ముగిశాయి. కానీ నేను తప్పుకుంటున్నాను.

"ఎంత ఆసక్తికరంగా!"

"ఈ "చిన్న రోబోట్‌లు" అనేక కోడ్‌లను అమలు చేయడం మాత్రమే కాదు, అవి ఒకదానితో ఒకటి కమ్యూనికేట్ చేయగలవు మరియు కొత్త రోబోట్‌లను పుట్టించగలవు."

"కొత్త రోబోట్లను పుట్టించాలా?"

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

" ఇది మంచి విషయంగా అనిపిస్తుంది, కానీ నేను దీన్ని ఎక్కడ ఉపయోగించాలో ఆలోచించలేను. "

మరియు మనం వాటిని " థ్రెడ్లు " అని ఎందుకు పిలుస్తాము ?

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

ప్రతి "చిన్న రోబోట్" అది నిర్వహించడానికి సృష్టించబడిన ఒక పనిని కలిగి ఉంటుంది. ఈ పనిని చేస్తున్నప్పుడు అమలు చేయబడిన ఆదేశాల సమితిని థ్రెడ్ అని మీరు అనుకోవచ్చు.

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

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

"సరిగ్గా."

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

మల్టీథ్రెడింగ్ - 1