జావాలోని లక్షణం ప్రోగ్రామ్ యొక్క రెండు లేదా అంతకంటే ఎక్కువ భాగాలను ఏకకాలంలో అమలు చేయడానికి అనుమతిస్తుంది. ప్రతి భాగం ఒక థ్రెడ్. ఈ దారాలు తరచుగా వారి చర్యలను సమన్వయం చేసుకోవాలి. జావాలో వేచి ఉండండి మరియు తెలియజేయండి వంటి కొన్ని తుది పద్ధతులను ఉపయోగించి ఇది జరుగుతుంది. ఈ పద్ధతులను వివరంగా అర్థం చేసుకోవడానికి ఈ వ్యాసం మీకు సహాయం చేస్తుంది.
నేను ఈ క్రింది క్రమంలో విషయాలను చర్చిస్తాను:
- థ్రెడ్ సింక్రొనైజేషన్ అంటే ఏమిటి?
- వేచి ఉండండి () మరియు తెలియజేయండి () పద్ధతులు ఏమిటి?
- జావాలో వేచి ఉండండి () మరియు నోటిఫై () ను ఎందుకు మరియు ఎలా ఉపయోగించాలి?
- ఉదాహరణ
ప్రారంభిద్దాం!
థ్రెడ్ సింక్రొనైజేషన్ అంటే ఏమిటి?
మల్టీ-థ్రెడ్ ప్రోగ్రామ్లు క్రమం తప్పకుండా బహుళ పరిస్థితులతో రావచ్చు మోసపూరిత మరియు ఆశ్చర్యకరమైన ఫలితాలను ఉత్పత్తి చేసే అదే వనరును పొందడానికి ప్రయత్నిస్తుంది. కొన్ని సమయాల్లో, ఒకటి కంటే ఎక్కువ థ్రెడ్లు భాగస్వామ్య వనరును ప్రాప్యత చేయడానికి ప్రయత్నించవచ్చు, వనరు ఒకేసారి ఒక థ్రెడ్ ద్వారా మాత్రమే ఉపయోగించబడుతుందని మీరు నిర్ధారించుకోవాలి. దీన్ని ఉపయోగించి చేయవచ్చు జావాలో సమకాలీకరణ.
ఇప్పుడు పోలింగ్ గురించి మాట్లాడుతున్నారు. పోలింగ్ అనేది ఒక పరిస్థితి నిజం అయ్యే వరకు పదేపదే పరీక్షించే ప్రక్రియ. ఈ పద్ధతి సహాయంతో అమలు చేయబడుతుంది ఒక నిర్దిష్ట పరిస్థితి నిజమో కాదో తనిఖీ చేయడానికి. మీరు థ్రెడ్ల కోసం ఈ పద్ధతిని ఉపయోగించవచ్చు, కానీ ఈ పద్ధతి చాలా CPU చక్రాలను వృధా చేస్తుంది అమలు ప్రక్రియ చాలా అసమర్థంగా చేస్తుంది. ఈ రకమైన దోషాలను నివారించడానికి, జావాలో వెయిట్ మరియు నోటిఫై వంటి పద్ధతులు ప్రవేశపెట్టబడ్డాయి.
వేచి ఉండండి () మరియు తెలియజేయండి () పద్ధతులు ఏమిటి?
మల్టీథ్రెడింగ్ సమస్యను పరిష్కరించడానికి, వేచి ఉండండి మరియు తెలియజేయండి ఉపయోగిస్తారు. ఆబ్జెక్ట్ క్లాస్ ఈ మూడు తుది పద్ధతులను ఉపయోగిస్తుంది, ఇది వనరు యొక్క లాక్ స్థితి గురించి థ్రెడ్లను కమ్యూనికేట్ చేయడానికి అనుమతిస్తుంది. వాటిని గార్డెడ్ బ్లాక్స్ అని కూడా పిలుస్తారు.
జావా సి ++ పైథాన్
వేచి ఉండండి ()
ఈ పద్ధతి మరొక థ్రెడ్ ఈ వస్తువు కోసం నోటిఫై () మరియు నోటిఫైఅల్ () పద్ధతులను అమలు చేసే వరకు థ్రెడ్ వేచి ఉండటానికి కారణమవుతుంది. ఈ వెయిట్ () పద్ధతి కాలింగ్ థ్రెడ్ను ఒక లాక్ని వదిలివేసి, మరికొన్ని థ్రెడ్ అదే మానిటర్లోకి ప్రవేశించి, తెలియజేయడానికి కాల్ చేసే వరకు () తెలియజేస్తుంది. ఈ పద్ధతి వేచి ఉండటానికి ముందు లాక్ను విడుదల చేస్తుంది మరియు వెయిట్ () పద్ధతి నుండి తిరిగి వచ్చే ముందు లాక్ను తిరిగి పొందుతుంది.
వేచి ఉండండి () పద్ధతి సమకాలీకరణ లాక్తో పటిష్టంగా కలిసిపోతుంది. సింక్రొనైజేషన్ మెకానిజం నుండి నేరుగా అందుబాటులో లేని లక్షణాన్ని ఉపయోగించడం ద్వారా ఇది జరుగుతుంది.
సింటాక్స్:
సమకాలీకరించబడింది (లాక్ ఆబ్జెక్ట్) {అయితే (! కండిషన్) {lockObject.night ()} // ఇక్కడ చర్య తీసుకోండి}
ప్రస్తుత థ్రెడ్ దాని వస్తువు మానిటర్ను కలిగి ఉండాలి. ఇది సమకాలీకరించబడిన పద్ధతి నుండి మాత్రమే పిలువబడాలి, లేకపోతే అది మినహాయింపును విసిరివేస్తుంది.
తెలియజేయండి ()
తెలియజేయడానికి ఈ పద్ధతి ఉపయోగించబడుతుంది అది పనిచేయవలసిన అవసరం ఉంది. ఇది ఒక థ్రెడ్ను మేల్కొంటుంది వేచి ఉండండి () అదే వస్తువుపై పద్ధతి.
కాలింగ్ గమనించండి తెలియజేయండి () చివరికి తాళాన్ని వదులుకోదు. ఇది మేల్కొలపడానికి వేచి ఉన్న థ్రెడ్కు చెబుతుంది. అయినప్పటికీ, నోటిఫైయర్ యొక్క సమకాలీకరించబడిన బ్లాక్ పూర్తయ్యే వరకు లాక్ వాస్తవానికి వదిలివేయబడదు. ఇప్పుడు మీరు పిలిస్తే చెప్పండి తెలియజేయండి () వనరుపై కానీ నోటిఫైయర్ దాని సమకాలీకరించిన బ్లాక్లో 10 సెకన్ల పాటు చర్యలను చేయవలసి ఉంది, నోటిఫైయర్ నోటిఫై చేసినప్పటికీ, వస్తువుపై లాక్ను విడుదల చేయడానికి నోటిఫైయర్ కోసం కనీసం 10 సెకన్ల పాటు వేచి ఉండాలి. () పిలువబడింది.
సింటాక్స్:
సమకాలీకరించబడింది (లాక్ ఆబ్జెక్ట్) {// install_the_condition lockObject.notify () // అవసరమైతే ఏదైనా అదనపు కోడ్}
నోటిఫైఅల్ ()
ఒకే వస్తువుపై వేచి ఉండండి () అని పిలిచే అన్ని థ్రెడ్లను మేల్కొలపడానికి ఈ పద్ధతి ఉపయోగించబడుతుంది. అత్యధిక ప్రాధాన్యత గల థ్రెడ్ మొదట హామీ ఇవ్వకపోయినా చాలా పరిస్థితులలో నడుస్తుంది. ఇతర విషయాలు నోటిఫై () పద్ధతి వలె ఉంటాయి.
జావాలో వేచి ఉండండి () మరియు నోటిఫై () ను ఎందుకు మరియు ఎలా ఉపయోగించాలి?
మీరు వేచి ఉండండి మరియు తెలియజేయాలి ఎందుకంటే అవి లాక్కు సంబంధించినవి మరియు వస్తువుకు లాక్ ఉంటుంది. జావాలో వేచి ఉండి తెలియజేయడం చాలా ప్రాథమిక భావన అయినప్పటికీ, అవి నిర్వచించబడ్డాయి ఆబ్జెక్ట్ క్లాస్ . ఆశ్చర్యకరంగా, వేచి ఉండి తెలియజేయడం ఉపయోగించి కోడ్ రాయడం అంత సులభం కాదు. నిర్మాత-వినియోగదారు సమస్యను వేచి ఉండటానికి మరియు తెలియజేయడానికి ఉపయోగించి కోడ్ రాయడం ద్వారా మీరు దీనిని పరీక్షించవచ్చు. ఇక్కడ, నేను పంచుకున్నాను క్యూ మరియురెండు దారాలుఅని నిర్మాత మరియు వినియోగదారుడు . నిర్మాత థ్రెడ్ సంఖ్యను భాగస్వామ్య క్యూలో ఉంచుతుంది మరియు వినియోగదారుడు థ్రెడ్ భాగస్వామ్య బకెట్ నుండి సంఖ్యలను వినియోగిస్తుంది.
షరతు ఏమిటంటే, ఒక వస్తువు ఉత్పత్తి అయిన తర్వాత, వినియోగదారు థ్రెడ్కు తెలియజేయాలి మరియు అదేవిధంగా, వినియోగ నిర్మాత థ్రెడ్కు తెలియజేయవలసిన అవసరం ఉంది. ఈ ఇంటర్ థ్రెడ్కమ్యూనికేషన్జావాలో వేచి ఉండి తెలియజేయండి.
గమనిక : డబ్ల్యూ.ait మరియు లేదుఆబ్జెక్ట్ క్లాస్లో tify పద్ధతులు నిర్వచించబడ్డాయి, మరియు వాటిని సింక్రొనైజ్డ్ బ్లాక్ లోపల పిలవాలి.
ఉదాహరణ
పబ్లిక్ క్లాస్ థ్రెడ్ 1 {పబ్లిక్ స్టాటిక్ వాయిడ్ మెయిన్ (స్ట్రింగ్ [] అర్గ్స్) {థ్రెడ్ 2 బి = కొత్త థ్రెడ్ 2 () బి. స్టార్ట్ () సమకాలీకరించబడింది (బి) {ప్రయత్నించండి {System.out.println ('2 పూర్తయ్యే వరకు వేచి ఉంది ...' ) బి. () int (int i = 0 i కోసం {సమకాలీకరించబడింది (ఇది) {<=100 i++) { total += i } notify() }}}
పై ఉదాహరణలో, థ్రెడ్ 2 యొక్క వస్తువు, అంటే బి, సమకాలీకరించబడిందని గమనించండి. ప్రధాన థ్రెడ్ దాని మొత్తం విలువను ఉత్పత్తి చేయడానికి ముందు ఈ బి గణనను పూర్తి చేస్తుంది.
అవుట్పుట్:
ఇది మనం నేర్చుకున్న ఈ వ్యాసం చివరకి తీసుకువస్తుంది జావాలో వేచి ఉండండి మరియు తెలియజేయండి.పైన పేర్కొన్న కంటెంట్ మీ మెరుగుపరచడంలో సహాయకరంగా ఉంటుందని నేను ఆశిస్తున్నాను జ్ఞానం. చదువుతూ ఉండండి, అన్వేషించండి!
కూడా తనిఖీ చేయండి ప్రపంచవ్యాప్తంగా 250,000 కంటే ఎక్కువ సంతృప్తికరమైన అభ్యాసకుల నెట్వర్క్తో విశ్వసనీయ ఆన్లైన్ లెర్నింగ్ సంస్థ ఎడురేకా చేత. ఎడురేకా యొక్క జావా J2EE మరియు SOA శిక్షణ మరియు ధృవీకరణ కోర్సు జావా డెవలపర్గా ఉండాలనుకునే విద్యార్థులు మరియు నిపుణుల కోసం రూపొందించబడింది. ఈ కోర్సు మీకు జావా ప్రోగ్రామింగ్లోకి రావడానికి మరియు వివిధ మరియు కోర్ మరియు అడ్వాన్స్డ్ జావా కాన్సెప్ట్లకు శిక్షణ ఇవ్వడానికి రూపొందించబడింది హైబర్నేట్ & స్ప్రింగ్ వంటివి.