FWQ
如何使用多线程公平模拟 100 人抢 10 张票?
如何公平地模拟多线程抢票 问题描述:如何使用多线程模拟 100 个人抢夺 10 张票,同时保证每个人都有公平的机会获得票? 解决方案: 为了确保公平性,我们可以使用并发集合(例如 concurrenthashset)来存储可用的票,并使用原子变量(例如 atomicinteger)来跟踪已售出的票数。此外,可以引入公平锁(通过设置 fr=true),以确保每个人都有相同的机会获得锁。 代码示例: import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.ReentrantLock; public class TicketGrabber { private final ConcurrentHashMap<Integer, Ticket> availableTickets; private…