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

जावा में सिंक्रोनाइज़्ड ब्लॉक्स का उपयोग कब करें?


एक सिंक्रोनाइज़्ड ब्लॉक कोड का एक टुकड़ा है जिसका उपयोग मेथड के किसी विशिष्ट संसाधन पर सिंक्रोनाइज़ेशन करने के लिए किया जा सकता है। एक सिंक्रोनाइज़्ड ब्लॉक का उपयोग किसी साझा संसाधन के लिए ऑब्जेक्ट को लॉक करने के लिए किया जाता है और सिंक्रोनाइज़्ड ब्लॉक का स्कोप सिंक्रोनाइज़्ड मेथड से छोटा होता है।

सिंटैक्स

synchronized(object) { 
    // कोड ब्लॉक 
}

यहां, एक ऑब्जेक्ट सिंक्रोनाइज़ किए जा रहे ऑब्जेक्ट का संदर्भ है। एक सिंक्रोनाइज़्ड ब्लॉक यह सुनिश्चित करता है कि ऑब्जेक्ट के सदस्य मेथड को कॉल केवल तभी होता है जब वर्तमान थ्रेड सफलतापूर्वक ऑब्जेक्ट के मॉनिटर में प्रवेश कर चुका हो।

उदाहरण

class TicketCounter { 
    int availableSeats = 2; 
    void bookTicket(String name, int numberOfSeats) { 
        if((availableSeats >= numberOfSeats) && (numberOfSeats > 0)) { 
            System.out.println(name + ": " + numberOfSeats + " सीट बुकिंग सफल"); 
            availableSeats -= numberOfSeats; 
        } else { 
            System.out.println(name + ": सीटें उपलब्ध नहीं"); 
        } 
    } 
} 
class TicketBookingThread extends Thread { 
    TicketCounter tc; 
    String name; 
    int seats; 
    TicketBookingThread(TicketCounter tc, String name, int seats) { 
        this.tc = tc; 
        this.name = name; 
        this.seats = seats; 
    } 
    public void run() {  
        synchronized(tc) { // सिंक्रोनाइज़्ड ब्लॉक  
            tc.bookTicket(name, seats); 
        } 
    } 
} 
public class SynchronizedBlockTest { 
    public static void main(String[] args) { 
        TicketCounter tc = new TicketCounter(); 
        TicketBookingThread t1 = new TicketBookingThread(tc, "Adithya", 2); 
        TicketBookingThread t2 = new TicketBookingThread(tc, "Jai", 2); 
        t1.start(); 
        t2.start(); 
    } 
}

आउटपुट

Adithya: 2 सीट बुकिंग सफल Jai: सीटें उपलब्ध नहीं

  1. Java में pack() मेथड का उपयोग कब कर सकते हैं? Java में pack() मेथड का उपयोग कब कर सकते हैं?

    pack() मेथड Java में Window क्लास में परिभाषित है और यह फ्रेम को इस तरह आकार देता है कि इसकी सभी सामग्री उनके पसंदीदा आकार पर या उससे ऊपर हैं। pack() मेथड का एक विकल्प setSize() या setBounds() मेथड्स को कॉल करके फ्रेम आकार को स्पष्ट रूप से स्थापित करना है। सामान्य तौर पर, pack() मेथड का उपयोग setSiz

  1. - Java में एब्सट्रैक्ट क्लास कब उपयोग करें और इंटरफेस कब उपयोग करें?

    एक इंटरफेस का उपयोग कॉन्ट्रैक्ट बिहेवियर को परिभाषित करने के लिए किया जा सकता है और यह दो सिस्टम्स के बीच इंटरैक्ट करने के लिए कॉन्ट्रैक्ट के रूप में भी कार्य कर सकता है जबकि एक एब्सट्रैक्ट क्लास मुख्य रूप से सबक्लासेस के लिए डिफ़ॉल्ट बिहेवियर को परिभाषित करने के लिए उपयोग की जाती है, इसका अर्थ है

  1. - SAP में हम Java Connector का उपयोग कर सकते हैं

    आप DDP का अपना कार्यान्वयन बना सकते हैं और फिर Environment.registerDestinationDataProvider() का उपयोग करके इसे पंजीकृत कर सकते हैं।