import java.util.concurrent.atomic.AtomicInteger; public class TicketBooking { private static AtomicInteger ticketsRemaining = new AtomicInteger(9); private static Object lock = new Object(); public static void main(String[] args) { // 创建三个抢票线程 Thread person1 = new Thread(new TicketBuyer("Person 1", 1)); Thread person2 = new Thread(new TicketBuyer("Person 2", 2)); Thread person3 = new Thread(new TicketBuyer("Person 3", 3)); // 启动三个线程 person1.start(); person2.start(); person3.start(); try { // 等待所有线程执行完毕 person1.join(); person2.join(); person3.join(); } catch (InterruptedException e) { e.printStackTrace(); } // 所有票已售空 System.out.println("票已售空"); } static class TicketBuyer implements Runnable { private String personName; private int order; public TicketBuyer(String personName, int order) { this.personName = personName; this.order = order; } @Override public void run() { while (true) { synchronized (lock) { int remaining = ticketsRemaining.get(); if (remaining >= 0 && remaining % 3 == order - 1) { System.out.println(personName + " 抢到一张票,剩余票数: " + remaining); ticketsRemaining.decrementAndGet(); } if (remaining <= 0) { break; } } } } } }