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

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

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

"మరియు మరింత సంక్లిష్టమైనది!"

"అవును, మెరుగైనది మరియు సంక్లిష్టమైనది. ఇది విమానం లాంటిది. నడక కంటే విమానంలో ఎగరడం మంచిది, కానీ చాలా క్లిష్టంగా ఉంటుంది. నేను కొత్త పరిస్థితిని చాలా సరళంగా వివరించడానికి ప్రయత్నిస్తాను."

"ఇదిగో వారు కనుగొన్నారు. లోకల్ థ్రెడ్ మెమరీని సింక్రొనైజ్ చేసే మెకానిజం, 'హాపెన్స్-బిఫోర్' అని కోడ్‌కి జోడించబడింది. అనేక నియమాలు/షరతులు కనుగొనబడ్డాయి. ఈ పరిస్థితులు సంతృప్తి చెందినప్పుడు, మెమరీ సమకాలీకరించబడుతుంది లేదా ప్రస్తుతానికి నవీకరించబడుతుంది. రాష్ట్రం.

"ఇదిగో ఒక ఉదాహరణ:"

ఆర్డర్ చేయండి థ్రెడ్ 1 థ్రెడ్ 2
1
2

101
102
103
104
105

201
202
203
204
205
public int y = 1;
public int x = 1;

x = 2;
synchronized(mutex)
{
 y = 2;
}
మ్యూటెక్స్ విడుదల కోసం థ్రెడ్ వేచి ఉంది

synchronized(mutex)
{
 if (y == x)
 System.out.println("YES");
}

"ఈ షరతుల్లో ఒకటి విడుదలైన మ్యూటెక్స్‌ని పొందడం. ఒక మ్యూటెక్స్ విడుదల చేయబడి, తిరిగి పొందినట్లయితే, అప్పుడు మెమరీ సముపార్జనకు ముందు సమకాలీకరించబడుతుంది. థ్రెడ్ 2 వేరియబుల్స్ x మరియు y యొక్క తాజా' విలువలను చూస్తుంది. మీరు వాటిని అస్థిరమైనవిగా ప్రకటించవద్దు."

"ఎంత ఇంటరెస్టింగ్! మరి ఈ పరిస్థితులు చాలా ఉన్నాయా?"

"చాలు - మెమరీని సమకాలీకరించడానికి ఇక్కడ కొన్ని షరతులు ఉన్నాయి:"

  • "ఒకే థ్రెడ్‌లో, ఏదైనా ఆదేశం జరుగుతుంది- సోర్స్ కోడ్‌లో దానిని అనుసరించే ఏదైనా ఆపరేషన్ ముందు."
  • "ఒక తాళం విడుదల జరుగుతుంది- అదే తాళం పొందే ముందు."
  • " సమకాలీకరించబడిన బ్లాక్/పద్ధతి  నుండి నిష్క్రమించడం జరుగుతుంది- సమకాలీకరించబడిన బ్లాక్/పద్ధతి అదే మానిటర్‌లో నమోదు చేయడానికి ముందు."
  • "జ్ఞాపకానికి అస్థిర క్షేత్రాన్ని వ్రాయడం జరుగుతుంది- అదే అస్థిర క్షేత్రాన్ని మెమరీ నుండి చదవడానికి ముందు."
  • "థ్రెడ్ ఆబ్జెక్ట్ యొక్క రన్ మెథడ్ ముగింపు జరుగుతుంది- జాయిన్() పద్ధతి ముగియడానికి ముందు లేదా అదే థ్రెడ్‌లోని ఆబ్జెక్ట్‌పై isAlive() పద్ధతి తప్పుగా చూపుతుంది."
  • "థ్రెడ్ ఆబ్జెక్ట్ యొక్క ప్రారంభ() పద్ధతికి కాల్ జరుగుతుంది- అదే థ్రెడ్‌లోని ఆబ్జెక్ట్‌పై రన్() పద్ధతి ప్రారంభం కావడానికి ముందు."
  • "కన్స్ట్రక్టర్ ముగింపు జరుగుతుంది- ఈ క్లాస్ ఫైనల్() పద్ధతి ప్రారంభానికి ముందు."
  • "ఇంటరప్ట్() పద్ధతికి కాల్ జరుగుతుంది- ఇంటర్‌రప్టెడ్ ఎక్సెప్షన్ విసిరివేయబడినందున లేదా isInterrupted() లేదా అంతరాయ() పద్ధతులను ఉపయోగించడం ద్వారా ఈ పద్ధతిని పిలవబడిందని థ్రెడ్ నిర్ధారించే ముందు."

"కాబట్టి, ఇది నేను అనుకున్నదానికంటే కొంచెం క్లిష్టంగా ఉందా?"

"అవును, కొంచెం క్లిష్టంగా ఉంది ..."

"ధన్యవాదాలు రిషీ. నేను దాని గురించి ఆలోచిస్తాను."

"ఈ టాపిక్ గురించి పెద్దగా కంగారు పడకండి. మీకే అన్నీ అర్థమయ్యే సమయం వస్తుంది. ప్రస్తుతానికి దట్టమైన అరణ్యంలోకి వెళ్లడం కంటే బేసిక్స్ అర్థం చేసుకోవడం మంచిది. జావా మెషీన్ యొక్క అంతర్గత పనితీరు. జావా 9 విడుదల చేయబడుతుంది మరియు తర్వాత ప్రతిదీ మళ్లీ మారుతుంది."

"ఓ_ఓ. అవును... కొన్ని విషయాలు తెలియకపోవడమే మంచిది."