java实现多线程卖票
时间: 2023-10-12 10:09:07 浏览: 100
以下是Java实现多线程卖票的示例代码:
```java
public class TicketSeller implements Runnable {
private int tickets = 100; // 总票数
@Override
public void run() {
while (true) {
// 加锁
synchronized (this) {
if (tickets > 0) { // 判断是否还有票
System.out.println(Thread.currentThread().getName() + "卖出第" + tickets + "张票");
tickets--; // 卖出一张票,总票数减1
} else {
break; // 没有票了,结束循环
}
}
}
}
public static void main(String[] args) {
TicketSeller seller = new TicketSeller(); // 创建一个售票员对象
Thread t1 = new Thread(seller, "售票员1");
Thread t2 = new Thread(seller, "售票员2");
Thread t3 = new Thread(seller, "售票员3");
t1.start(); // 启动三个线程
t2.start();
t3.start();
}
}
```
在这个示例代码中,我们定义了一个TicketSeller类,实现了Runnable接口,并在run()方法中编写了卖票的逻辑。在卖票时,我们使用了synchronized关键字来加锁,确保同一时间只有一个线程可以执行卖票操作,避免出现数据不一致的情况。
在main()方法中,我们创建了一个售票员对象,并创建了三个线程来模拟三个售票员同时卖票的场景。通过调用Thread对象的start()方法启动线程,让它们开始卖票。在运行过程中,我们可以看到三个售票员交替卖票,直到所有票都卖完为止。
阅读全文