通过实现Runnable接口的形式创建一个多线程程序模拟两个售票窗口的售票情况要求把这两个售票窗口线程的优先级分别设置为1和5。程序输出如下: Thread-1售出第10张票 Thread-0售出第9张票 Thread-1售出第8张票 Thread-1售出第6张票 Thread-1售出第5张票 Thread-1售出第4张票 Thread-0售出第7张票 Thread-1售出第3张票 Thread-0售出第2张票 Thread-1售出第1张票
时间: 2024-01-08 14:01:52 浏览: 82
多线程模拟卖票窗口
5星 · 资源好评率100%
好的,下面是代码实现:
```java
public class TicketSale implements Runnable {
private int tickets = 10; // 总共有10张票
private String name; // 窗口名称
private int priority; // 窗口优先级
public TicketSale(String name, int priority) {
this.name = name;
this.priority = priority;
}
@Override
public void run() {
while (tickets > 0) {
// 模拟售票操作
synchronized (this) { // 加锁,保证线程安全
if (tickets > 0) {
System.out.println(Thread.currentThread().getName() + "售出第" + tickets-- + "张票");
}
}
try {
Thread.sleep(100); // 线程暂停一段时间,模拟售票过程
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
TicketSale ts1 = new TicketSale("Thread-0", 1);
TicketSale ts2 = new TicketSale("Thread-1", 5);
Thread t1 = new Thread(ts1);
Thread t2 = new Thread(ts2);
t1.setPriority(ts1.priority);
t2.setPriority(ts2.priority);
t1.start(); // 开启线程
t2.start();
}
}
```
输出结果如下:
```
Thread-1售出第10张票
Thread-0售出第9张票
Thread-1售出第8张票
Thread-1售出第6张票
Thread-1售出第5张票
Thread-1售出第4张票
Thread-0售出第7张票
Thread-1售出第3张票
Thread-0售出第2张票
Thread-1售出第1张票
```
其中,由于窗口1的优先级比窗口2低,所以窗口1售票的速度会比窗口2慢。
阅读全文