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

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

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

  • ऑब्जेक्ट लेवल लॉक्स - इसका उपयोग तब किया जा सकता है जब आप चाहते हैं कि नॉन-स्टेटिक मेथड या कोड के नॉन-स्टेटिक ब्लॉक को केवल एक थ्रेड द्वारा एक्सेस किया जाए।
  • क्लास लेवल लॉक - इसका उपयोग तब किया जा सकता है जब हम रनटाइम पर सभी उपलब्ध इंस्टेंस में से किसी में भी कई थ्रेड्स को सिंक्रोनाइज़्ड ब्लॉक में प्रवेश करने से रोकना चाहते हैं। इसका उपयोग हमेशा स्थिर डेटा थ्रेड को सुरक्षित बनाने के लिए किया जाना चाहिए।
<टेबल> <थेड> सीनियर। नहीं।
<वें शैली ="पाठ-संरेखण:केंद्र;">कुंजी
<वें स्टाइल ="टेक्स्ट-एलाइन:सेंटर;">ऑब्जेक्ट लेवल लॉक
<वें शैली ="पाठ-संरेखण:केंद्र;">कक्षा स्तर लॉक

1

बुनियादी

इसका उपयोग तब किया जा सकता है जब आप चाहते हैं कि गैर-स्थैतिक विधि या कोड के गैर-स्थिर ब्लॉक को केवल एक थ्रेड द्वारा एक्सेस किया जाना चाहिए

इसका उपयोग तब किया जा सकता है जब हम रनटाइम पर किसी भी उपलब्ध इंस्टेंस में कई थ्रेड्स को सिंक्रोनाइज़्ड ब्लॉक में प्रवेश करने से रोकना चाहते हैं

2

स्थिर/गैर स्थैतिक

इसका उपयोग हमेशा गैर-स्थिर डेटा थ्रेड को सुरक्षित बनाने के लिए किया जाना चाहिए।

इसका उपयोग हमेशा स्थिर डेटा थ्रेड को सुरक्षित बनाने के लिए किया जाना चाहिए।


3

तालों की संख्या

कक्षा की प्रत्येक वस्तु का अपना ताला हो सकता है

क्लास के कई ऑब्जेक्ट मौजूद हो सकते हैं लेकिन हमेशा एक क्लास का क्लास ऑब्जेक्ट लॉक उपलब्ध होता है

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

public class ClassLevelLockExample {
   public void classLevelLockMethod() {
      synchronized (ClassLevelLockExample.class) {
         //DO your stuff here
      }
   }
}

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

public class ObjectLevelLockExample {
   public void objectLevelLockMethod() {
      synchronized (this) {
         //DO your stuff here
      }
   }
}

  1. जावा में रीएंट्रेंटलॉक और सिंक्रोनाइज़्ड के बीच अंतर

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

  1. जावा में थ्रेड और रननेबल के बीच अंतर

    निष्पादन का एक नया धागा बनाने के दो तरीके हैं। एक वर्ग को थ्रेड वर्ग का उपवर्ग घोषित करना है। इस उपवर्ग को थ्रेड क्लास की रन विधि को ओवरराइड करना चाहिए। उपवर्ग का एक उदाहरण तब आवंटित और शुरू किया जा सकता है। थ्रेड बनाने का दूसरा तरीका एक वर्ग घोषित करना है जो रननेबल इंटरफ़ेस को लागू करता है। वह वर्

  1. जावा में ऑब्जेक्ट लेवल लॉक बनाम क्लास लेवल लॉक?

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