同期 Block は、メソッドの特定のリソースで同期を実行するために使用できるコードの一部です。 同期ブロックは、共有リソース オブジェクトをロックするために使用されます。同期ブロックのスコープは、同期メソッドよりも小さいです。
synchronized(object) { // block of code }
ここで、Object は同期されるオブジェクトへの参照です。同期ブロックにより、現在のスレッドがオブジェクトのモニターに正常に入った後にのみオブジェクトのメンバー メソッドが呼び出されます。
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
以上がJava では、いつ同期ブロックを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。