4、电影院票数总共20张,需要有三个窗口同时售票。步骤如下:1.定义一个类Ticket实现Runnable接口,里面定义一个成员变量:private int count = 20; 2.在Ticket类中重写run()方法实现卖票,代码步骤如下: A:判断票数大于0,进行售票,总票数减1。 B:打印“xxx售票成功,剩余票数:xx” 。(xxx为线程名称,xx为剩余票数)。 3.在主函数main中 A:创建Ticket类的对象, B:创建三个Thread类的对象,把Ticket对象作为构造方法的参数,并给出对应的窗口名称, C:启动线程,售票完毕,结束程序。
时间: 2024-03-02 11:51:24 浏览: 124
以下是实现代码:
```java
public class Ticket implements Runnable {
private int count = 20;
@Override
public void run() {
while (count > 0) {
synchronized (this) {
if (count > 0) {
System.out.println(Thread.currentThread().getName() + "售票成功,剩余票数:" + (--count));
}
}
}
}
public static void main(String[] args) {
Ticket ticket = new Ticket();
Thread t1 = new Thread(ticket, "窗口1");
Thread t2 = new Thread(ticket, "窗口2");
Thread t3 = new Thread(ticket, "窗口3");
t1.start();
t2.start();
t3.start();
}
}
```
在这个代码中,我们创建了一个实现了Runnable接口的Ticket类,其中有一个count成员变量表示剩余票数。在run()方法中,我们使用synchronized同步块确保线程安全,判断count是否大于0,如果大于0,就售出一张票,并将count减1,然后打印出售票信息。在主函数main中,我们创建了三个Thread类的对象,分别将Ticket对象作为构造方法的参数,并给出对应的窗口名称,然后启动线程,售票完毕,程序结束。
阅读全文