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