有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在producerconsumer场景中,java LinkedBlockingQueue与多个生产者的线程安全性

我试图在Java中模拟一种情况,其中许多生产者(至少2个)以固定速率访问同一LinkedBlockingQueue。他们生产,投入,然后重新开始。 我想知道这是否会最终导致那些试图同时获得队列写访问权的生产者之间的竞争条件。它们是java。util。同时发生的BlockingQueue的实现已经设置为处理此类问题,或者我应该手动创建互斥体以避免此类问题

谢谢你的关注


共 (1) 个答案

  1. # 1 楼答案

    java的阻塞队列对于单个操作是线程安全的,例如take和put,但是不适用于多个操作的put或take操作,例如addAll,这些操作不是以原子方式执行的

    因此,在您的情况下,答案是否定的,您不应该自己处理线程安全问题,除非您希望生产商生产多个产品并将它们全部放在一个操作中