Maison  >  Article  >  Java  >  En Java, quand peut-on utiliser des blocs synchronisés ?

En Java, quand peut-on utiliser des blocs synchronisés ?

WBOY
WBOYavant
2023-09-03 10:21:09720parcourir

En Java, quand peut-on utiliser des blocs synchronisés ?

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.

Syntaxe

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.

Exemple

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();
   }
}

Sortie

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer