जावा में सिंक्रनाइज़() को मिलाकर, ReentrantLock.lock()
और ReetrantLock.unlock()
उसी लॉकिंग तंत्र का उपयोग synchronized()
के रूप में करें?ReentrantLock.lock()
मेरा अनुमान है "नहीं," लेकिन मुझे गलत होने की उम्मीद है।
उदाहरण:
कल्पना कीजिए कि थ्रेड 1 और थ्रेड 2 दोनों की पहुंच है:
ReentrantLock lock = new ReentrantLock();
थ्रेड 1 रन:
synchronized (lock) {
// blah
}
थ्रेड 2 रन:
lock.lock();
try {
// blah
}
finally {
lock.unlock();
}
मान लें कि थ्रेड 1 पहुंचता है इसके पहले भाग, तो थ्रेड 1 समाप्त होने से पहले थ्रेड 2: थ्रेड 2 थ्रेड 1 के लिए synchronized()
ब्लॉक छोड़ने के लिए प्रतीक्षा करेगा, या यह आगे बढ़ेगा और चलाएगा?
यही मुझे लगा। एक ऐसी जगह है जहां मुझे 'ReetrantLock.tryLock()' का उपयोग करने की आवश्यकता है, और मैं हर जगह 'सिंक्रनाइज़' के साथ दूर होने की उम्मीद कर रहा था। धन्यवाद। –