Computer >> Máy Tính >  >> Lập trình >> Java

Khi nào chúng ta có thể sử dụng các khối Đồng bộ hóa trong Java?

A Được đồng bộ hóa khối là một đoạn mã có thể được sử dụng để thực hiện đồng bộ hóa trên bất kỳ tài nguyên cụ thể nào của phương thức. Một Khối được đồng bộ hóa được sử dụng để khóa một đối tượng cho bất kỳ tài nguyên được chia sẻ nào và phạm vi của khối được đồng bộ hóa nhỏ hơn phương pháp đồng bộ hóa .

Cú pháp

synchronized(object) {
   // block of code
}

Đây, một đối tượng là một tham chiếu đến đối tượng đang được đồng bộ hóa. Một khối được đồng bộ hóa đảm bảo rằng lệnh gọi đến một phương thức là thành viên của một đối tượng chỉ xảy ra sau khi luồng hiện tại đã vào thành công màn hình của đối tượng.

Ví dụ

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

Đầu ra

Adithya : 2 Seats Booking Success
Jai : Seats Not Available