2.编写多线程程序,模拟两个售票窗口出售车票的功能。定义一个实现Runnable接口的类Ticket,成员变量seat表示车票的座位号,初始值为1,在run()方法中每隔0.1秒售出一张票,要求车票的座位号(1~100)不能重复。编写主类,创建两个线程共同出售100张车票
时间: 2023-04-04 17:04:02 浏览: 93
可以回答这个问题。以下是代码实现:
```
public class Ticket implements Runnable {
private int seat = 1;
@Override
public void run() {
while (seat <= 100) {
synchronized (this) {
if (seat <= 100) {
System.out.println(Thread.currentThread().getName() + "售出第" + seat + "张车票");
seat++;
}
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main {
public static void main(String[] args) {
Ticket ticket = new Ticket();
Thread thread1 = new Thread(ticket, "售票窗口1");
Thread thread2 = new Thread(ticket, "售票窗口2");
thread1.start();
thread2.start();
}
}
```
以上代码中,Ticket类实现了Runnable接口,run()方法中使用synchronized关键字保证了售票的线程安全,每隔0.1秒售出一张票,座位号不能重复。在主类中创建两个线程,共同出售100张车票。
阅读全文