Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

जावा में ऑब्जेक्ट लेवल लॉक और क्लास लेवल लॉक में अंतर

मल्टीथ्रेडिंग वातावरण में, दो या दो से अधिक थ्रेड साझा संसाधनों को एक साथ एक्सेस कर सकते हैं जिससे सिस्टम का असंगत व्यवहार हो सकता है। जावा साझा संसाधनों या ऑब्जेक्ट्स के समवर्ती एक्सेस को प्रतिबंधित करने के लिए लॉक की अवधारणा का उपयोग करता है। लॉक दो स्तरों पर लागू किए जा सकते हैं -

  • ऑब्जेक्ट लेवल लॉक्स - इसका उपयोग तब किया जा सकता है जब आप चाहते हैं कि नॉन-स्टेटिक मेथड या नॉन-स्टेटिक कोड ब्लॉक केवल एक थ्रेड द्वारा एक्सेस किया जाए।
  • क्लास लेवल लॉक्स - इसका उपयोग तब किया जाता है जब हम रनटाइम पर उपलब्ध सभी इंस्टेंस में से किसी में भी सिंक्रोनाइज़्ड ब्लॉक में कई थ्रेड्स को प्रवेश करने से रोकना चाहते हैं। इसका उपयोग हमेशा स्टेटिक डेटा को थ्रेड-सेफ बनाने के लिए किया जाना चाहिए।
क्र. सं. मुख्य बिंदु ऑब्जेक्ट लेवल लॉक क्लास लेवल लॉक
1 बेसिक इसका उपयोग तब किया जा सकता है जब आप चाहते हैं कि नॉन-स्टेटिक मेथड या नॉन-स्टेटिक कोड ब्लॉक केवल एक थ्रेड द्वारा एक्सेस किया जाए इसका उपयोग तब किया जाता है जब हम रनटाइम पर उपलब्ध सभी इंस्टेंस में से किसी में भी सिंक्रोनाइज़्ड ब्लॉक में कई थ्रेड्स को प्रवेश करने से रोकना चाहते हैं
2 स्टेटिक/नॉन-स्टेटिक इसका उपयोग हमेशा नॉन-स्टेटिक डेटा को थ्रेड-सेफ बनाने के लिए किया जाना चाहिए। इसका उपयोग हमेशा स्टेटिक डेटा को थ्रेड-सेफ बनाने के लिए किया जाना चाहिए।
3 लॉक्स की संख्या क्लास का प्रत्येक ऑब्जेक्ट का अपना लॉक हो सकता है क्लास के कई ऑब्जेक्ट मौजूद हो सकते हैं लेकिन हमेशा एक क्लास का क्लास ऑब्जेक्ट लॉक उपलब्ध होता है

क्लास लेवल लॉक का उदाहरण

public class ClassLevelLockExample {
    public void classLevelLockMethod() {
        synchronized (ClassLevelLockExample.class) {
            // अपना काम यहां करें
        }
    }
}

ऑब्जेक्ट लेवल लॉक का उदाहरण

public class ObjectLevelLockExample {
    public void objectLevelLockMethod() {
        synchronized (this) {
            // अपना काम यहां करें
        }
    }
}
  1. - जावा में ReentrantLock और Synchronized के बीच अंतर

    शेयर्ड रिसोर्स पर मल्टीपल थ्रेड्स द्वारा लॉक प्राप्त करने के दो तरीके हैं: एक है ReentrantLock (या ReadWriteLock) और दूसरा है Synchronized मेथड का उपयोग करके। ReentrantLock क्लास Java 5 से जावा कन्करेंसी पैकेज में प्रदान की गई है। यह Lock इंटरफेस का इम्प्लीमेंटेशन है और जावा डॉक्स के अनुसार, Lock इ

  1. - जावा में Thread और Runnable के बीच अंतर

    थ्रेड एक्जीक्यूशन का नया थ्रेड बनाने के दो तरीके हैं। एक है Thread क्लास का सबक्लास घोषित करना। इस सबक्लास को Thread क्लास के run मेथड को ओवरराइड करना चाहिए। सबक्लास का इंस्टेंस तब एलोकेट और स्टार्ट किया जा सकता है। थ्रेड बनाने का दूसरा तरीका है Runnable इंटरफेस को इम्प्लीमेंट करने वाली क्लास घोषित

  1. - जावा में ऑब्जेक्ट लेवल लॉक और क्लास लेवल लॉक में अंतर?

    ऑब्जेक्ट लेवल लॉक और क्लास लेवल लॉक दोनों का उपयोग मल्टी-थ्रेडेड एप्लिकेशन में सिंक्रोनाइज़ेशन मैकेनिज्म प्राप्त करने के लिए किया जाता है। ऑब्जेक्ट लेवल लॉक जावा में प्रत्येक ऑब्जेक्ट का एक यूनिक लॉक होता है। यदि कोई थ्रेड किसी दिए गए ऑब्जेक्ट पर सिंक्रोनाइज़्ड मेथड निष्पादित करना चाहता है, तो पहल