FWQ
如何实现多个消费者同时参与生产者-消费者问题中的消费?
生产者与消费者问题:多个消费者参与消费 假设希望多个消费者参与消费,但在提供的代码中,只有一个消费者参与消费。出现该问题的原因在于 wt 和 notifyAll 机制的限制。 问题代码使用 wait 和 notifyAll 来实现生产者和消费者之间的同步。持有列表锁的线程才能调用 wait,而 notifyAll 仅会唤醒调用该锁的线程。 在代码中,生产者首先获取锁并开始处理,然后通过 notifyAll 唤醒所有由列表锁调用的等待线程。但是,多个消费者无法同时持有该锁,因此只有第一个获取锁的消费者会被唤醒并开始处理。 例如,如果生产者首先获取锁,则消费者 1 和消费者 2 将进行竞争。假设消费者 1 首先获取锁,它将处理列表并通过 notifyAll 唤醒所有等待线程。此时,消费者 1 尚未释放锁,只有当列表为空且需要等待时才会释放锁。…