用java写电影院票数总共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-25 13:41:56 浏览: 70
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(); // 创建Ticket对象
Thread thread1 = new Thread(ticket, "窗口1"); // 创建三个Thread对象,把Ticket对象作为构造方法的参数,并给出对应的窗口名称
Thread thread2 = new Thread(ticket, "窗口2");
Thread thread3 = new Thread(ticket, "窗口3");
thread1.start(); // 启动线程
thread2.start();
thread3.start();
}
}
```
在上面的代码中,我们实现了一个Ticket类,该类实现了Runnable接口。在重写的run()方法中,我们使用了同步代码块来保证线程安全,实现了售票的过程。在main函数中,我们创建了一个Ticket对象,并利用该对象创建了三个Thread对象,分别对应着三个售票窗口。最后,我们启动了这三个线程,并执行售票操作,直到所有票都售完,程序结束。
阅读全文