class BookTheaterSeat {
static int total_seats = 20;
//synchronized method
static synchronized void bookSeat(int seats) {
if (total_seats >= seats) {
System.out.println(seats + " Seats booked Successfully");
total_seats -= seats;
System.out.println("Total seats available= " + total_seats);
} else {
System.out.println("Booking failed due to less seat are available");
System.out.println("Seats available are : " + total_seats);
}
}
}
class MyThread1 extends Thread {
BookTheaterSeat b;
int seats;
MyThread1(BookTheaterSeat b, int seats) {
this.b = b;
this.seats = seats;
}
@Override
public void run() {
b.bookSeat(seats);
}
}
class MyThread2 extends Thread {
BookTheaterSeat b;
int seats;
MyThread2(BookTheaterSeat b, int seats) {
this.b = b;
this.seats = seats;
}
@Override
public void run() {
b.bookSeat(seats);
}
}
public class MovieBookApp2 extends Thread {
int seats;
static BookTheaterSeat b;
@Override
public void run() {
b.bookSeat(seats);
}
public static void main(String[] args) {
BookTheaterSeat b1 = new BookTheaterSeat();
MyThread1 t1 = new MyThread1(b1, 7);
t1.start();
MyThread2 t2 = new MyThread2(b1, 6);
t2.start();
BookTheaterSeat b2 = new BookTheaterSeat();
MyThread1 t3 = new MyThread1(b2, 5);
t3.start();
MyThread2 t4 = new MyThread2(b2, 6);
t4.start();
}
}