使用java的synchronized实现买票案例多线程的同步。
时间: 2024-02-15 12:02:52 浏览: 88
好的,让我为您解答这个问题。
使用 Java 的 synchronized 关键字可以实现多线程的同步。下面是一个简单的买票案例多线程的同步示例:
```java
public class Ticket implements Runnable {
private int ticketCount = 100;
public void run() {
while (ticketCount > 0) {
synchronized (this) {
if (ticketCount > 0) {
System.out.println(Thread.currentThread().getName() + "卖出了第" + (100 - ticketCount + 1) + "张票");
ticketCount--;
}
}
}
}
public static void main(String[] args) {
Ticket ticket = new Ticket();
Thread thread1 = new Thread(ticket, "线程1");
Thread thread2 = new Thread(ticket, "线程2");
Thread thread3 = new Thread(ticket, "线程3");
thread1.start();
thread2.start();
thread3.start();
}
}
```
在这个例子中,有一个 Ticket 类实现了 Runnable 接口。在 run 方法中,当 ticketCount 大于 0 时,使用 synchronized 关键字对 this 对象进行加锁。当一个线程进入 synchronized 块时,其他线程必须等待当前线程释放锁才能进入 synchronized 块执行。这样就保证了多个线程对 ticketCount 进行操作时的同步。
在 main 方法中,创建了三个线程并启动它们。由于这三个线程共享一个 Ticket 对象,因此它们会共同卖出 100 张票。
希望这个答案能够帮到您。如果您还有其他问题,可以随时问我。
阅读全文