एक सिंक्रनाइज़ किया गया अवरुद्ध करें कोड का एक टुकड़ा है जिसका उपयोग विधि के किसी विशिष्ट संसाधन पर सिंक्रनाइज़ेशन करने के लिए किया जा सकता है। एक सिंक्रनाइज़ किया गया ब्लॉक किसी साझा संसाधन के लिए किसी ऑब्जेक्ट को लॉक करने के लिए उपयोग किया जाता है और एक सिंक्रनाइज़ ब्लॉक का दायरा सिंक्रनाइज़ की गई विधि से छोटा होता है .
सिंटैक्स
synchronized(object) { // block of code }
यहाँ, एक ऑब्जेक्ट ऑब्जेक्ट को सिंक्रनाइज़ किए जाने का संदर्भ है। एक सिंक्रोनाइज़्ड ब्लॉक यह सुनिश्चित करता है कि किसी विधि के लिए कॉल जो किसी ऑब्जेक्ट का सदस्य है, केवल तभी होता है जब वर्तमान थ्रेड ऑब्जेक्ट के मॉनिटर में सफलतापूर्वक प्रवेश कर गया हो।
उदाहरण
class TicketCounter { int availableSeats = 2; void bookTicket(String name, int numberOfSeats) { if((availableSeats >= numberOfSeats) && (numberOfSeats > 0)) { System.out.println(name+" : "+ numberOfSeats + " Seats Booking Success"); availableSeats -= numberOfSeats; } else { System.out.println(name +" : Seats Not Available"); } } } 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) { // synchronized block 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 Seats Booking Success Jai : Seats Not Available