జావాలో ఏకకాలిక హాష్ మ్యాప్‌ను ఉత్తమంగా అమలు చేయడం ఎలా?



ఈ వ్యాసం జావాలో కంకరెంట్ హాష్ మ్యాప్ అని పిలువబడే ఒక భావనను మీకు పరిచయం చేస్తుంది మరియు దానిని ఆచరణాత్మక ప్రదర్శనతో అనుసరిస్తుంది

ఈ వ్యాసం మీకు ఏకకాలిక హాష్ మ్యాప్ ఇన్ అనే భావనను పరిచయం చేస్తుంది మరియు దానిని ఆచరణాత్మక ప్రదర్శనతో అనుసరించండి. ఈ వ్యాసంలో పాయింటర్లను అనుసరిస్తారు,

జావాలోని కంకరెంట్ హాష్ మ్యాప్‌లో ఈ కథనంతో కదులుతోంది





కంకరెంట్ హాష్ మ్యాప్ అంతర్గతంగా ఎలా పనిచేస్తుంది?

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



జావాలోని కంకరెంట్ హాష్ మ్యాప్‌లో ఈ కథనంతో కదులుతోంది

ఇతర మ్యాప్ ఎందుకు?

మనకు ఇప్పటికే హాష్ మ్యాప్, హాష్ టేబుల్ ఉన్నప్పటికీ, కంకరెంట్ హాష్ మ్యాప్ అవసరం ఏమిటి, ఎందుకంటే ఇది థ్రెడ్-సేఫ్ అయిన అదే సమయంలో మెరుగైన పనితీరును అందిస్తుంది.

జావాలోని కంకరెంట్ హాష్ మ్యాప్‌లో ఈ కథనంతో కదులుతోంది



ఇది ఎలా భిన్నంగా ఉంటుంది?

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

వివరంగా మాట్లాడే ముందు క్రింద కొన్ని భావనలను సమీక్షిద్దాం:

ఏకకాలిక హాష్ మ్యాప్: ఈ మ్యాప్ ఏకకాలిక థ్రెడ్ యాక్సెస్‌ను అనుమతిస్తుంది. మ్యాప్‌ను జోడించేటప్పుడు లేదా నవీకరించేటప్పుడు సెగ్మెంట్ అనగా అంతర్లీన డేటా నిర్మాణం అని పిలువబడే మ్యాప్‌లో కొంత భాగం మాత్రమే లాక్ అవుతోంది. ఇది లాక్ చేయకుండా డేటాను చదవడానికి ఏకకాలిక థ్రెడ్ యాక్సెస్‌ను అనుమతిస్తుంది. పనితీరు మెరుగుపరచడానికి ఇది ప్రవేశపెట్టబడింది.

  • సమకాలీన-స్థాయి: ఇది ఏకకాలంలో నవీకరించే థ్రెడ్ల సంఖ్య.
  • లోడ్-కారకం: ఇది పున izing పరిమాణం కారకాన్ని నియంత్రించడానికి ఉపయోగించే విలువ.
  • ప్రారంభ సామర్థ్యం: ఇది అందించిన పరిమాణంతో మ్యాప్‌ను సృష్టించే ఆస్తి.

క్రింద ఉన్న రేఖాచిత్రం చూద్దాం మరియు ఏకకాలిక హాష్ మ్యాప్ ఎలా పనిచేస్తుందో అర్థం చేసుకోవడానికి ప్రయత్నిద్దాం.

చిత్రం- ఏకకాలిక హష్మాప్- ఎడురేకా

కాబట్టి పై రేఖాచిత్రంలో, మనకు 16 తాళాలు ఉన్నాయి, ఇవి మ్యాప్‌లో కొంత భాగాన్ని మాత్రమే లాక్ చేస్తాయి, తద్వారా ఇతర పద్ధతులను వేర్వేరు థ్రెడ్‌ల ద్వారా యాక్సెస్ చేయవచ్చు, తద్వారా పనితీరు మెరుగుపడుతుంది.

హాష్ మ్యాప్ మాదిరిగానే, కంకరెంట్ హాష్ మ్యాప్ డిఫాల్ట్గా 16 సెగ్మెంట్లను కలిగి ఉంటుంది మరియు హాషింగ్ ద్వారా ఎలిమెంట్ను నిల్వ చేస్తుంది, కాబట్టి ఎలిమెంట్స్ ఒకే హాష్ కలిగి ఉంటే అవి లింక్డ్ లిస్ట్ సహాయంతో పై రేఖాచిత్రంలో చూపిన విధంగానే అదే విభాగంలో నిల్వ చేయబడతాయి.

జావాలోని కంకరెంట్ హాష్ మ్యాప్‌లో ఈ కథనంతో కదులుతోంది

ఏకకాలిక హాష్ మ్యాప్ మరియు హాష్ మ్యాప్ మధ్య వ్యత్యాసం

హాష్ మ్యాప్ కలెక్షన్స్ కు చెందినది, కాంకరెంట్ హాష్ మ్యాప్ కంకరెంట్ కలెక్షన్స్ కు చెందినది అయితే వాటి మధ్య ఇంకా చాలా తేడాలు ఉన్నాయి.

  • ఏకకాలిక హాష్ మ్యాప్థ్రెడ్-సేఫ్ అనగాసమకాలీకరించబడింది కాని హాష్ మ్యాప్ సమకాలీకరించబడలేదు.
  • సమకాలీన హాష్ మ్యాప్ పనితీరుపై తక్కువగా ఉంటుంది ఎందుకంటే ఇది సమకాలీకరించబడింది ఎందుకంటే కొన్నిసార్లు థ్రెడ్లు వేచి ఉండాల్సి ఉంటుంది కాని హాష్ మ్యాప్ పనితీరుపై ఎక్కువగా ఉంటుంది ఎందుకంటే ఇది సమకాలీకరించబడదు మరియు ఏదైనా థ్రెడ్లు ఒకేసారి యాక్సెస్ చేయగలవు.
  • రెండు థ్రెడ్లు ఏకకాలంలో ఆబ్జెక్ట్ యొక్క కంటెంట్లను సవరించడానికి లేదా జోడించడానికి ప్రయత్నిస్తుంటే మేము కంకరెంట్ మోడిఫికేషన్ ఎక్సెప్షన్ పొందుతాము. ఏదేమైనా, కంకరెంట్ హాష్ మ్యాప్ విషయంలో, అదే ఆపరేషన్ చేస్తున్నప్పుడు మాకు మినహాయింపు లభించదు.

  • హాష్ మ్యాప్‌లోని కీ మరియు విలువల కోసం శూన్య విలువలు అనుమతించబడతాయి, అయితే, కీ మరియు విలువ కోసం శూన్య విలువలను కంకరెంట్ హాష్ మ్యాప్ అనుమతించదు, అది శూన్య విలువను జోడించడానికి ప్రయత్నించినప్పుడు మనకు మినహాయింపు లభిస్తుంది, అనగా నల్‌పాయింటర్ ఎక్సెప్షన్.

  • హాష్ మ్యాప్ JDK 1.2 లో ప్రవేశపెట్టబడింది, అయితే JDK 1.5 లో కంకరెంట్ హాష్ మ్యాప్ ప్రవేశపెట్టబడింది.

మెరుగైన పనితీరు కోసం మేము ఇంతకుముందు చూసినట్లుగా, ఇది టేబుల్ బకెట్లుగా నోడ్ల శ్రేణిని కలిగి ఉంటుంది, ఇది ముందు టేబుల్ సెగ్మెంట్లు జావా 8 .

మొదటి చొప్పించేటప్పుడు బకెట్లు సోమరితనం ప్రారంభించబడతాయి. ప్రతి బకెట్ బకెట్ యొక్క మొదటి నోడ్‌ను లాక్ చేయడం ద్వారా స్వతంత్రంగా లాక్ చేయవచ్చు, ఆపరేషన్లు కూడా నిరోధించవద్దు.

తో పోలిస్తే హాష్ మ్యాప్, ఏకకాలిక హాష్ మ్యాప్ అదనపు అందిస్తుంది concurrencyLevel ఉపయోగించడానికి అంచనా వేసిన థ్రెడ్ల సంఖ్యను నియంత్రించడానికి వాదన.

కన్స్ట్రక్టర్లు:

  1. ఏకకాలిక హాష్ మ్యాప్ m = క్రొత్త ఏకకాలిక హాష్ మ్యాప్ ()

    డిఫాల్ట్ ప్రారంభ సామర్థ్యం 16, లోడ్ కారకం 0.75 మరియు ఉమ్మడి స్థాయి 16 తో కొత్త ఖాళీ మ్యాప్ సృష్టించబడుతుంది.

  2. కంకరెంట్ హాష్ మ్యాప్ m = కొత్త కంకరెంట్ హాష్ మ్యాప్ (పూర్ణాంక ప్రారంభ సామర్థ్యం)
    పేర్కొన్న ప్రారంభ సామర్థ్యం, ​​లోడ్ కారకం 0.75 మరియు ఉమ్మడి స్థాయి 16 తో కొత్త ఖాళీ మ్యాప్ సృష్టించబడుతుంది.

  3. కంకరెంట్ హాష్ మ్యాప్ m = కొత్త కంకరెంట్ హాష్ మ్యాప్ (పూర్ణాంక ప్రారంభ సామర్థ్యం, ​​ఫ్లోట్ లోడ్ఫ్యాక్టర్)

    ఉమ్మడి స్థాయి 16 తో పేర్కొన్న ప్రారంభ సామర్థ్యం మరియు లోడ్ కారకంతో కొత్త ఖాళీ మ్యాప్ సృష్టించబడుతుంది.

  4. కంకరెంట్ హాష్ మ్యాప్ m = కొత్త కంకరెంట్ హాష్ మ్యాప్ (పూర్ణాంక ప్రారంభ సామర్థ్యం, ​​ఫ్లోట్ లోడ్ఫ్యాక్టర్, పూర్ణాంక స్థాయి)
    పేర్కొన్న ప్రారంభ సామర్థ్యం, ​​లోడ్ కారకం మరియు ఉమ్మడి స్థాయితో కొత్త ఖాళీ మ్యాప్ సృష్టించబడుతుంది.

  5. ఏకకాలిక హాష్ మ్యాప్ m = క్రొత్త ఏకకాలిక హాష్ మ్యాప్ (మ్యాప్ m)
    అందించిన మ్యాప్ నుండి క్రొత్త ఏకకాలిక హాష్ మ్యాప్‌ను సృష్టిస్తుంది.

ఇతర రెండు వాదనలు: ప్రారంభ సామర్థ్యం మరియు లోడ్ఫ్యాక్టర్ హాష్ మ్యాప్ మాదిరిగానే పనిచేస్తాయి.
కంకరెంట్ మ్యాప్ అనేది బహుళ-థ్రెడ్ వాతావరణంలో కీ / విలువ కార్యకలాపాలపై మెమరీ స్థిరంగా ఉంటుంది.

జావాలోని కంకరెంట్ హాష్ మ్యాప్‌లో ఈ కథనంతో కదులుతోంది

ఆపదలు

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

పరిమాణం, isEmpty, మరియు కలిగి ఉన్న విలువలతో సహా మొత్తం స్థితి పద్ధతుల ఫలితాలు ఇతర థ్రెడ్‌లలో మ్యాప్ ఏకకాల నవీకరణలకు లోనైనప్పుడు మాత్రమే ఉపయోగపడతాయి.

ఉమ్మడి నవీకరణలు సరిగ్గా నియంత్రించబడితే ఈ స్థితి పద్ధతులు నమ్మదగినవి.

ఈ పద్ధతులు నిజ సమయంలో హామీ ఇవ్వనప్పటికీ.

డిఫాల్ట్ పట్టిక సామర్థ్యం 16 అయితే మేము దానిని సమన్వయ స్థాయిని ఉపయోగించి మార్చవచ్చు.

పబ్లిక్ కంకరెంట్ హాష్ మ్యాప్ (int initialCapacity, float loadFactor, int concurrencyLevel) {// ... if (initialCapacity

కీలు కీలు క్రమబద్ధీకరించబడిన క్రమంలో ఉండాలంటే మేము కంకరెంట్ స్కిప్లిస్ట్ మ్యాప్ ను ఉపయోగించవచ్చు.

పైథాన్ డెఫ్ __ఇనిట్ __ (స్వీయ)

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

మాకు ప్రశ్న ఉందా? దయచేసి ఈ వ్యాసం యొక్క వ్యాఖ్యల విభాగంలో దీనిని ప్రస్తావించండి మరియు మేము వీలైనంత త్వరగా మిమ్మల్ని సంప్రదిస్తాము.