Synchronisation Block est un morceau de code qui peut être utilisé pour effectuer une synchronisation sur n'importe quelle ressource spécifique d'une méthode. Les Blocs synchronisés sont utilisés pour verrouiller les objets de toute ressource partagée, et la portée des blocs synchronisés est plus petite que celle des méthodes synchronisées.
synchronized(object) { // block of code }
Ici, Object est une référence à l'objet en cours de synchronisation. Un bloc synchronisé garantit que les méthodes membres d'un objet ne sont appelées qu'une fois que le thread actuel est entré avec succès dans le moniteur de l'objet.
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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!