java中使用多线程购票的例子
时间: 2023-09-01 22:07:57 浏览: 100
下面是一个简单的Java多线程购票的例子:
```java
public class Ticket implements Runnable {
private int ticketNum = 10; // 总票数为10张
public void run() {
while (true) {
synchronized (this) { // 使用synchronized锁住代码块
if (ticketNum > 0) {
System.out.println(Thread.currentThread().getName() + "购买了第" + ticketNum + "张票");
ticketNum--;
} else {
System.out.println("票已售罄," + Thread.currentThread().getName() + "购票失败");
break;
}
}
}
}
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();
}
}
```
在这个例子中,Ticket类实现了Runnable接口,实现了run()方法。在run()方法中使用synchronized关键字来锁住代码块,保证同时只有一个线程访问该代码块,避免出现多个线程同时购买同一张票的情况。
在main()方法中,创建了三个线程t1、t2和t3,它们共同使用Ticket对象来执行购票的操作。每个线程在执行run()方法时,都会尝试购买一张票,直到所有票都被售出为止。
需要注意的是,使用多线程购票时需要注意线程安全问题,应该在修改共享变量时使用synchronized关键字来避免多线程访问的冲突。
阅读全文