Synchronisierung Block ist ein Codestück, das verwendet werden kann, um eine Synchronisierung für eine bestimmte Ressource einer Methode durchzuführen. Synchronisierte Blöcke werden zum Sperren von Objekten einer beliebigen gemeinsam genutzten Ressource verwendet, und der Umfang synchronisierter Blöcke ist kleiner als bei synchronisierten Methoden.
synchronized(object) { // block of code }
Hier ist Object ein Verweis auf das Objekt, das synchronisiert wird. Ein synchronisierter Block stellt sicher, dass die Mitgliedsmethoden eines Objekts erst aufgerufen werden, nachdem der aktuelle Thread erfolgreich in den Monitor des Objekts eingetreten ist.
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() { <strong> synchronized(tc) { // synchronized block </strong> 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
Das obige ist der detaillierte Inhalt vonWann können wir in Java synchronisierte Blöcke verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!