అంతర్నిర్మిత లక్షణాల యొక్క సమగ్ర శ్రేణి కారణంగా ప్రోగ్రామర్లలో బాగా ప్రాచుర్యం పొందింది. మీ సమస్య కనిపించక ముందే చాలా సార్లు మీకు ప్రత్యేకమైన పరిష్కారం ఉంటుంది. అటువంటి చాలా ఉపయోగకరమైన మరియు ముఖ్యమైన భాగం జావాలోని బ్లాకింగ్ క్యూ ఇంటర్ఫేస్. ఈ వ్యాసం యొక్క మాధ్యమం ద్వారా, నేను జావాలోని బ్లాకింగ్ క్యూ మరియు దానిని అమలు చేసే పద్ధతులపై కొంత వెలుగునిస్తాను.
ఈ వ్యాసంలో పొందుపరచబడిన విషయాలు క్రింద ఉన్నాయి:
- జావాలో బ్లాకింగ్ క్యూ ఇంటర్ఫేస్
- జావాలో బ్లాకింగ్ క్యూ కోసం కన్స్ట్రక్టర్ల రకాలు
- బ్లాకింగ్ క్యూ ఇంటర్ఫేస్లో పద్ధతులు
- బ్లాకింగ్ క్యూ అమలులు
జావాలో బ్లాకింగ్ క్యూ ఇంటర్ఫేస్
జావాలో బ్లాకింగ్ క్యూ సమకాలీన హాష్ మ్యాప్, కాపీఆన్రైట్అర్రేలిస్ట్ వంటి కొన్ని ఇతర ఉమ్మడి యుటిలిటీ క్లాసులతో పాటు జావా 1.5 లో చేర్చబడిన ఇంటర్ఫేస్. బ్లాకింగ్ క్యూ ఇంటర్ఫేస్ దీనికి చెందినది java.util.concurrent ప్యాకేజీ .ఈ ఇంటర్ఫేస్ నిరోధించడాన్ని సక్రియం చేయడం ద్వారా ప్రవాహ నియంత్రణను మెరుగుపరుస్తుంది, ఒక థ్రెడ్ ఖాళీ క్యూను తగ్గించడానికి లేదా పూర్తి క్యూను ఎన్క్యూ చేయడానికి ప్రయత్నిస్తుంటే. ఈ రెండు సందర్భాల్లో, ఈ ఇంటర్ఫేస్ ఉపయోగపడుతుంది.సరళంగా చెప్పాలంటే, a ఇప్పటికే పూర్తి క్యూలో మూలకాలను జోడించడానికి ప్రయత్నిస్తోంది. ప్రోగ్రామ్లోని ఈ సమయంలో, బ్లాకింగ్ క్యూ ప్రారంభించబడుతుంది, ఇది స్థలాన్ని చేయడానికి మరొక థ్రెడ్ క్యూను విడుదల చేసే వరకు నిర్దిష్ట థ్రెడ్ను బ్లాక్ చేస్తుంది. ఇది మొత్తం క్యూ యొక్క క్లియరెన్స్ యొక్క మూలకం (ల) ను డీక్యూయింగ్ చేసిన ఫలితం. అదేవిధంగా, కొన్ని ఇతర థ్రెడ్ చొప్పించే వరకు లేదా ఖాళీగా ఉన్న ఒక మూలకాన్ని జోడించే వరకు ఇప్పటికే ఖాళీగా ఉన్న క్యూను డీక్యూ చేయడానికి ప్రయత్నిస్తున్న థ్రెడ్ను నిరోధించడానికి బ్లాకింగ్ క్యూ ఉపయోగించబడుతుంది. క్యూ .
జావాలో బ్లాకింగ్ క్యూ ఇంటర్ఫేస్తో పనిచేస్తున్నప్పుడు, ఇది శూన్య విలువను అంగీకరించదని మీరు గుర్తుంచుకోవాలి. ఒకవేళ మీరు అలా చేయడానికి ప్రయత్నిస్తే అది తక్షణమే నల్పాయింటర్ ఎక్సెప్షన్ను విసిరివేస్తుంది. దిగువ బొమ్మ జావాలో బ్లాకింగ్ క్యూ ఇంటర్ఫేస్ యొక్క పనిని సూచిస్తుంది.
ఇది ఇంటర్ఫేస్ ప్రధానంగా ఉత్పత్తిదారు-వినియోగదారుల మధ్య ఉపయోగించబడుతుంది ఎందుకంటే ఇది థ్రెడ్-సేఫ్.నా ఉద్దేశ్యం ఏమిటంటే, బ్లాకింగ్ క్యూ ఇంటర్ఫేస్ను క్యూ సృష్టించడానికి ఉపయోగించవచ్చు, అది నిర్మాత మరియు వినియోగదారు ఇద్దరూ పంచుకోవచ్చు
లూప్ ప్రోగ్రామ్ ఉదాహరణల కోసం జావా
జావాలో బ్లాకింగ్ క్యూతో పనిచేయడానికి, మొదట, మీరు దాని రకాలను తెలుసుకోవాలి. ఈ వ్యాసం యొక్క తరువాతి విభాగంలో మీకు పరిచయం చేస్తాను.
జావాలో బ్లాకింగ్ క్యూ కోసం కన్స్ట్రక్టర్ల రకాలు
జావాలో బ్లాకింగ్ క్యూ ఇంటర్ఫేస్ కోసం రెండు రకాల కన్స్ట్రక్టర్లు ఉన్నాయి:
- అపరిమితమైన క్యూ: ఈ రకమైన క్యూ కోసం, సామర్థ్యం Integer.MAX_VALUE కు సెట్ చేయబడుతుంది. అపరిమితమైన క్యూ ఎప్పటికీ నిరోధించబడదు ఎందుకంటే ఇది డైనమిక్గా పెరుగుతుంది, ప్రతిసారీ ఒక మూలకం దానిలో చేర్చబడుతుంది. అపరిమితమైన క్యూను సృష్టించడానికి వాక్యనిర్మాణం క్రింద ఉంది:
బ్లాకింగ్ క్యూ bq = క్రొత్త లింక్డ్బ్లాకింగ్డెక్ ()
- సరిహద్దు క్యూ: ఈ రకమైన క్యూ కోసం, మీరు దాని సృష్టి సమయంలో క్యూ సామర్థ్యాన్ని దాటాలి, అనగా a బిల్డర్ పరామితి. పరిమాణం కేటాయించిన తర్వాత, దాన్ని మార్చలేము. సరిహద్దు క్యూని సృష్టించడానికి వాక్యనిర్మాణం క్రింద ఉంది:
బ్లాకింగ్ క్యూ bq = క్రొత్త లింక్డ్బ్లాకింగ్డెక్ (10)
జావాలో బ్లాకింగ్ క్యూను అమలు చేసే మార్గాల గురించి మీకు ఇప్పుడు బాగా తెలుసు, దాని యొక్క కొన్ని పద్ధతులను జాబితా చేద్దాం.
బ్లాకింగ్ క్యూ ఇంటర్ఫేస్లో పద్ధతులు
విధానం | వివరణ |
బూలియన్ యాడ్ (E ఇ) | క్యూలో స్థలం ఉంటే ఈ క్యూలో పేర్కొన్న మూలకాన్ని చొప్పించడంలో ఈ పద్ధతి సహాయపడుతుందిఒక త్రోచట్టవిరుద్ధ స్టేట్ ఎక్సెప్షన్ |
బూలియన్ కలిగి ఉంది (ఆబ్జెక్ట్ ఓ) | క్యూలో పేర్కొన్న మూలకం ఉంటే ఈ పద్ధతి నిజం అవుతుంది |
పూర్ణాంకానికి (సేకరణ సి) | ఈ పద్ధతి క్యూ నుండి అందుబాటులో ఉన్న అన్ని అంశాలను తీసివేసి, పేర్కొన్న సేకరణకు జోడిస్తుంది |
int drainTo (సేకరణ c, int maxElements) | ఈ పద్ధతి క్యూ నుండి అందుబాటులో ఉన్న మూలకాల సంఖ్యను తీసివేసి, పేర్కొన్న వాటిలో జోడిస్తుంది |
బూలియన్ ఆఫర్ (E ఇ) | ఈ పద్ధతి పేర్కొన్న మూలకాన్ని పూర్తిస్థాయిలో లేనట్లయితే క్యూలోకి చొప్పించి, నిజమైనదిగా తిరిగి వస్తుంది, లేకపోతే అది తప్పుగా వస్తుంది |
బూలియన్ ఆఫర్ (E ఇ, లాంగ్ టైమ్అవుట్, టైమ్యూనిట్ యూనిట్) | ఈ పద్ధతి పేర్కొన్న మూలకాన్ని క్యూలోకి చొప్పిస్తుంది. ఒకవేళ క్యూ నిండినట్లయితే, స్థలం అందుబాటులోకి రావడానికి పేర్కొన్న నిరీక్షణ సమయం వరకు వేచి ఉంటుంది. |
ఇ పోల్ (లాంగ్ టైమ్అవుట్, టైమ్యూనిట్ యూనిట్) | ఈ పద్ధతి క్యూ యొక్క తలని తిరిగి పొందడానికి మరియు తొలగించడానికి సహాయపడుతుంది. ఒకవేళ క్యూ ఖాళీగా ఉంటే, ఒక మూలకం అందుబాటులోకి రావడానికి ఇది నిర్దిష్ట నిరీక్షణ సమయం వరకు వేచి ఉంటుంది |
శూన్య పుట్ (E ఇ) | ఈ పద్ధతి పేర్కొన్న మూలకాన్ని క్యూలోకి చొప్పిస్తుంది, స్థలం అందుబాటులో ఉంటుంది |
పూర్ణాంక సామర్థ్యం () | ఈ పద్ధతి నిరోధించకుండా ఈ క్యూ ఆదర్శంగా అంగీకరించగల అదనపు మూలకాల సంఖ్యను తిరిగి ఇవ్వడంలో సహాయపడుతుంది |
బూలియన్ తొలగించు (ఆబ్జెక్ట్ ఓ) | ఈ పద్ధతి పేర్కొన్న మూలకం యొక్క ఒక ఉదాహరణను క్యూ నుండి తీసివేస్తుంది |
ఇ టేక్ () | క్యూ ఖాళీగా ఉంటే, ఒక మూలకం అందుబాటులోకి వచ్చే వరకు వేచి ఉండడం ద్వారా క్యూ యొక్క తలని తిరిగి పొందటానికి మరియు తొలగించడానికి ఈ పద్ధతి సహాయపడుతుంది. |
బ్లాకింగ్ క్యూ అమలులు
ఇక్కడ నేను జావాలో బ్లాకింగ్ క్యూ యొక్క సరళమైన ఉదాహరణను అమలు చేస్తానుతరగతి EduProducer డేటాను ఉత్పత్తి చేస్తుంది మరియు దానిని a లోకి చొప్పిస్తుంది క్యూ , ఏకకాలంలో, మరొక తరగతి, ఎడుకాన్సుమర్ అదే క్యూ నుండి డేటాను తొలగిస్తుంది.
దీని కోసం నేను 3 తరగతులను సృష్టిస్తాను:
- ఎడుప్రొడ్యూసర్
- ఎడుకాన్సుమర్
- ఎడురేకా మెయిన్
ఇప్పుడు ఈ తరగతులను ఒక్కొక్కటిగా సృష్టించుకుందాం.
జావా చార్ అర్రే డిఫాల్ట్ విలువ
EduProducer.java
ప్యాకేజీ ఎడ్యూరెకా దిగుమతి java.util.concurrent.BlockingQueue పబ్లిక్ క్లాస్ ఎడుప్రొడ్యూసర్ అమలు చేయగల {ప్రైవేట్ ఫైనల్ బ్లాకింగ్ క్యూ క్యూ public ఓవర్రైడ్ పబ్లిక్ శూన్యత రన్ () {ప్రయత్నించండి {ప్రాసెస్ ()} క్యాచ్ (ఇంటరప్టెడ్ ఎక్సెప్షన్ ఇ) {థ్రెడ్.కరెంట్ థ్రెడ్ (). అంతరాయం ()} v ప్రైవేట్ శూన్య ప్రక్రియ () ఇంటరప్టెడ్ ఎక్సెప్షన్ విసురుతుంది {// (int i = 0 i<10 i++) { System.out.println('[Producer] Add : ' + i) queue.put(i) System.out.println('[Producer] Queue's Remaining Capacity : ' + queue.remainingCapacity()) Thread.sleep(150) } } public EduProducer(BlockingQueue queue) { this.queue = queue } }
EduConsumer.java
ప్యాకేజీ ఎడ్యురేకా దిగుమతి java.util.concurrent.BlockingQueue పబ్లిక్ క్లాస్ ఎడుకాన్సుమర్ అమలు చేయగల {ప్రైవేట్ ఫైనల్ బ్లాకింగ్ క్యూ క్యూ public ఓవర్రైడ్ పబ్లిక్ శూన్యత రన్ () {ప్రయత్నించండి {అయితే (నిజం) {పూర్ణాంకం టేక్ = క్యూ.టేక్ () ప్రాసెస్ (టేక్)}} క్యాచ్ (ఇంటరప్టెడ్ ఎక్సెప్షన్ ఇ) {థ్రెడ్.కరెంట్ థ్రెడ్ (). అంతరాయం ()}} ప్రైవేట్ శూన్య ప్రక్రియ (ఇంటీజర్ టేక్) విసురుతుంది ఇంటరప్టెడ్ ఎక్సెప్షన్ EduConsumer (బ్లాకింగ్ క్యూ క్యూ) {this.queue = క్యూ}}
EdurekaMain.java
ప్యాకేజీ ఎడ్యురేకా దిగుమతి java.util.concurrent.BlockingQue దిగుమతి java.util.concurrent.LinkedBlockingQueue public class EdurekaMain {public static void main (string [] args) {BlockingQueue queue = new LinkedBlockingQueue (10) new Thread (new EduProducer .స్టార్ట్ () కొత్త థ్రెడ్ (కొత్త ఎడ్యుకాన్సుమర్ (క్యూ)). ప్రారంభం ()}}
మీరు కోడ్ రాయడం పూర్తయిన తర్వాత, దిగువ అవుట్పుట్ పొందడానికి ప్రోగ్రామ్ను అమలు చేయండి:
[నిర్మాత] జోడించు: 0 [వినియోగదారు] తీసుకోండి: 0 [నిర్మాత] క్యూ యొక్క మిగిలిన సామర్థ్యం: 9 [నిర్మాత] జోడించు: 1 [నిర్మాత] క్యూ యొక్క మిగిలిన సామర్థ్యం: 9 [నిర్మాత] జోడించు: 2 [నిర్మాత] క్యూ యొక్క మిగిలిన సామర్థ్యం: 8 [నిర్మాత ] జోడించు: 3 [నిర్మాత] క్యూ యొక్క మిగిలిన సామర్థ్యం: 7 [వినియోగదారు] తీసుకోండి: 1 [నిర్మాత] జోడించు: 4 [నిర్మాత] క్యూ యొక్క మిగిలిన సామర్థ్యం: 7 [నిర్మాత] జోడించు: 5 [నిర్మాత] క్యూ యొక్క మిగిలిన సామర్థ్యం: 6 [నిర్మాత] జోడించు : 6 [నిర్మాత] క్యూ యొక్క మిగిలిన సామర్థ్యం: 5 [వినియోగదారు] తీసుకోండి: 2 [నిర్మాత] జోడించు: 7 [నిర్మాత] క్యూ యొక్క మిగిలిన సామర్థ్యం: 5 [నిర్మాత] జోడించు: 8 [నిర్మాత] క్యూ యొక్క మిగిలిన సామర్థ్యం: 4 [నిర్మాత] జోడించు: 9 [నిర్మాత] క్యూ యొక్క మిగిలిన సామర్థ్యం: 3 [వినియోగదారు] తీసుకోండి: 3 [వినియోగదారుడు] తీసుకోండి: 4 [వినియోగదారుడు] తీసుకోండి: 5 [వినియోగదారుడు] తీసుకోండి: 6 [వినియోగదారుడు] తీసుకోండి: 7 [వినియోగదారుడు] తీసుకోండి: 8 [వినియోగదారుడు] తీసుకోండి: 9
ఇది జావాలోని బ్లాకింగ్ క్యూపై ఈ వ్యాసం చివర మనలను తీసుకువస్తుంది. మీరు జావాను మరింత వివరంగా నేర్చుకోవాలనుకుంటే మీరు మా చూడండి అలాగే.
ఇప్పుడు మీరు జావాలో బ్లాకింగ్ క్యూ యొక్క ప్రాథమికాలను అర్థం చేసుకున్నారు, చూడండి ప్రపంచవ్యాప్తంగా విస్తరించి ఉన్న 250,000 మందికి పైగా సంతృప్తికరమైన అభ్యాసకుల నెట్వర్క్తో విశ్వసనీయ ఆన్లైన్ లెర్నింగ్ సంస్థ ఎడురేకా చేత. ఎడురేకా యొక్క జావా J2EE మరియు SOA శిక్షణ మరియు ధృవీకరణ కోర్సు జావా డెవలపర్గా ఉండాలనుకునే విద్యార్థులు మరియు నిపుణుల కోసం రూపొందించబడింది. జావా ప్రోగ్రామింగ్లోకి మీకు మంచి ప్రారంభాన్ని ఇవ్వడానికి మరియు హైబర్నేట్ & స్ప్రింగ్ వంటి వివిధ జావా ఫ్రేమ్వర్క్లతో పాటు కోర్ మరియు అడ్వాన్స్డ్ జావా కాన్సెప్ట్ల కోసం మీకు శిక్షణ ఇవ్వడానికి ఈ కోర్సు రూపొందించబడింది.
మాకు ప్రశ్న ఉందా? దయచేసి ఈ “జావాలోని బ్లాకింగ్ క్యూ” లోని వ్యాఖ్యల విభాగంలో పేర్కొనండి మరియు మేము వీలైనంత త్వరగా మిమ్మల్ని సంప్రదిస్తాము.