ReentrantLock
![](https://cdn.codegym.cc/images/article/ee2cd199-b06a-4310-93c0-67f113b8ba93/1024.jpeg)
కండిషన్ - లాక్లలో షరతులను వర్తింపజేయడం స్ట్రీమ్లకు యాక్సెస్ నిర్వహణపై నియంత్రణను సాధించడానికి మిమ్మల్ని అనుమతిస్తుంది. లాక్ కండిషన్ అనేదిjava.util.concurrent.locksనుండి కండిషన్ ఇంటర్ఫేస్ యొక్క వస్తువు . కండిషన్ ఆబ్జెక్ట్లను ఉపయోగించడం అనేది ఆబ్జెక్ట్ క్లాస్లోనివెయిట్/నోటిఫై/నోటిఫైఅన్నిఉపయోగించడం వంటి అనేక మార్గాల్లో ఉంటుంది, ఇది మునుపటి అంశాలలో ఒకదానిలో చర్చించబడింది.
లాక్ అనేది లాక్ ఫ్రేమ్వర్క్నుండి ఒక ఇంటర్ఫేస్, ఇది సమకాలీకరించబడిన వాటితో పోలిస్తే వనరులు/బ్లాక్లకు ప్రాప్యతను పరిమితం చేయడానికి సౌకర్యవంతమైన విధానాన్ని అందిస్తుంది. అనేక తాళాలను ఉపయోగిస్తున్నప్పుడు, వారి విడుదల యొక్క క్రమం ఏకపక్షంగా ఉంటుంది, అంతేకాకుండా అది కూడా కాన్ఫిగర్ చేయబడుతుంది. లాక్ ఇప్పటికే సంగ్రహించబడినప్పుడు పరిస్థితిని నిర్వహించడానికి అవకాశం కూడా ఉంది.
ReentrantLock అనేది లాక్ ఇంటర్ఫేస్, ReentrantLock క్లాస్యొక్క అమలులలో ఒకటి. ఇది లాక్ పద్ధతిని కాల్ చేయడానికి అదే థ్రెడ్ను అనుమతిస్తుంది, అది ఇంతకు ముందు కాల్ చేసినప్పటికీ, లాక్ని విడుదల చేయకుండా.
ReentrantLock క్లాస్ , లాక్ ఇంటర్ఫేస్ యొక్క పద్ధతులతో పాటు , ఒక ఫ్యాక్టరీ పద్ధతిని కలిగి ఉంది newCondition() . ఈ పద్ధతి ఒక వస్తువును తిరిగి ఇస్తుందిపరిస్థితి, ఇది ప్రస్తుత థ్రెడ్ను అందించిన వస్తువు యొక్క నిరీక్షణ సెట్కు జోడించడానికి మిమ్మల్ని అనుమతిస్తుందిపరిస్థితి.
private final Lock R_LOCK = ReentrantLock();
R_LOCK.lock();
try {
//some action happens here
} finally {
R_LOCK.unlock();
}
రీడ్రైట్లాక్ అనేది రీడ్/రైట్ లాక్లను రూపొందించడానికి ఒక ఇంటర్ఫేస్. సిస్టమ్లో చాలా రీడ్లు మరియు కొన్ని వ్రాతలు ఉన్నప్పుడు తాళాలు చాలా ఉపయోగకరంగా ఉంటాయి.
ReentrantReadWriteLock - బహుళ-థ్రెడ్ సేవలు మరియు కాష్లలో ఉపయోగించబడుతుంది, సమకాలీకరించబడిన బ్లాక్లతో పోలిస్తే చక్కటి పనితీరును పెంచుతుంది. వాస్తవానికి, తరగతి 2 పరస్పరం ప్రత్యేకమైన మోడ్లలో పనిచేస్తుంది: చాలా మంది పాఠకులు డేటాను సమాంతరంగా చదువుతారు మరియు 1 రచయిత మాత్రమే డేటాను వ్రాసినప్పుడు.
ReentrantReadWriteLock.ReadLock - రీడర్ల కోసం రీడ్ లాక్, readWriteLock.readLock() ద్వారా పొందబడింది.
ReentrantReadWriteLock.WriteLock - రైటర్స్ కోసం రైట్ లాక్, readWriteLock.writeLock() ద్వారా పొందబడింది.
సింక్రోనైజర్
![](https://cdn.codegym.cc/images/article/cb9ae844-7dce-459b-b8af-55a1830c5fb1/512.jpeg)
AbstractOwnableSynchronizer అనేది సింక్రొనైజేషన్ మెకానిజమ్లను రూపొందించడానికి బాధ్యత వహించే బేస్ క్లాస్. మీ డేటాపై పనిచేసే ప్రత్యేకమైన స్ట్రీమ్ను గుర్తుంచుకోవడానికి మరియు చదవడానికి గెట్టర్/సెట్టర్ని కలిగి ఉంటుంది.
AbstractQueuedSynchronizer అనేది FutureTask, CountDownLatch, Semaphore, ReentrantLock, ReentrantReadWriteLockలో సింక్రొనైజేషన్ మెకానిజం కోసం బేస్ క్లాస్. ఒకే మరియు పరమాణు పూర్ణాంక విలువపై ఆధారపడే కొత్త సమకాలీకరణ విధానాలను సృష్టించేటప్పుడు కూడా ఇది ఉపయోగించబడుతుంది.
AbstractQueuedLongSynchronizer అనేది అటామిక్ లాంగ్ వాల్యూకి మద్దతిచ్చే AbstractQueuedSynchronizer యొక్క వైవిధ్యం