java使用多线程同步方法模拟三个窗口售票
时间: 2023-01-12 09:13:20 浏览: 128
在 Java 中,可以使用多线程同步方法来模拟三个窗口售票。
首先,定义一个类表示售票窗口,该类需要有一个共享的计数器表示当前剩余的票数。然后,在该类中定义一个同步方法来执行售票操作,该方法应该检查是否有剩余的票,如果有,则将计数器减 1,并打印出售出一张票的消息。
最后,创建三个线程,分别代表三个售票窗口,并启动这三个线程。
示例代码如下:
```
public class TicketWindow extends Thread {
private static int ticket = 100;
@Override
public void run() {
while (true) {
synchronized (TicketWindow.class) {
if (ticket > 0) {
System.out.println(Thread.currentThread().getName() + " 售出了第 " + ticket + " 张票");
ticket--;
} else {
break;
}
}
}
}
}
public class Main {
public static void main(String[] args) {
TicketWindow t1 = new TicketWindow();
t1.setName("窗口1");
TicketWindow t2 = new TicketWindow();
t2.setName("窗口2");
TicketWindow t3 = new TicketWindow();
t3.setName("窗口3");
t1.start();
t2.start();
t3.start();
}
}
```
在上面的代码中,我们使用了 Java 的同步方法来保证在多线程环境下对共享数据的操作是线程安全的。具体来说,我们使用了 synchronized 关键字来修饰 run() 方法,这样就能够保证在同一