java - LinkedBlockingQueue - java - 队列已满

标签 java multithreading

我有一个链接的阻塞队列,我围绕它进行协调
20 个消费者线程和 20 个生产者线程的工作。
容量是队列的 10 个(我目前正在测试)。

但不是阻塞,而是当我放入满队列时,
我在下面收到此错误。为什么这样? JavaDoc 说
在这种情况下,队列应该是阻塞的。
我误会了什么吗?

java.lang.IllegalStateException: Queue full
    at java.util.AbstractQueue.add(AbstractQueue.java:98)
    at java.util.AbstractQueue.addAll(AbstractQueue.java:187)

最佳答案

您需要使用 putLinkedBlockingQueue 上。 put 将等待必要的时间直到有可用空间。 offer 将返回一个指示成功或失败的 boolean 值。

关于java - LinkedBlockingQueue - java - 队列已满,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32756327/

相关文章:

java - 在运行时修改 Java 类以使实例字段变为 transient ——这会起作用吗?

java - 用于从单向一对多关系检索数据的 Hibernate 查询

c# - 多线程 .NET 应用程序导致在 64 位四核 Windows Server 上运行的 KERNEL32.dll 中出现应用程序错误

multithreading - 线程不在 Netty UDP 服务器中同时执行

multithreading - 是否可以让 scala Future 在同一个线程中执行映射操作,就像 Java CompletableFuture 一样?

java - 剪辑不播放任何声音

java - 编写修改对象的 Java 函数的最佳方法

java - 边框布局程序未按预期完成

C# 套接字 : Do I really need so many separate threads

c++ - 从原子内容的意义上说,从匿名管道中读取是原子的吗?