问题标签 [blockingqueue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2877 浏览

java - notify() 而不是 notifyAll() 用于阻塞队列

我试图找出是否有可能有一个多生产者/多消费者队列,我可以在其中使用notify()而不是notifyAll(). 例如,在下面的实现中(来源:here)你不能简单地切换notifyAll()for notify()。为什么你不能切换并不完全清楚,所以我将把它作为一个预告片留给任何想帮助我理解这个问题的人。

所以下面的代码被破坏了:

0 投票
2 回答
2858 浏览

java - Java -BlockingQueue -- 多个生产者,单个消费者

请快速澄清

我知道BlockingQueues是线程安全的。

这是否意味着我可以将阻塞队列的单个引用传递给所有可以随意丢弃事件以供单个消费者使用的生产者,并且没有任何东西被破坏?

否则,必须生成多达 20 个BlockingQueues可能有或可能没有定期更新的内容,并以任何效率阅读它们似乎是一项不可逾越的任务。

0 投票
1 回答
906 浏览

activemq - 从队列中删除的消息

我使用 BlockingQueue 实现通过队列中的服务处理我的事件。但是,如果服务器出现故障,则该队列中的所有事件都将被删除,因此我缺少要处理的事件。(我正在寻找一些内部数据库,服务器可以在其中存储来自队列的事件/消息,如果服务器再次关闭和启动,它可以加载所有事件/消息以再次处理,而无需手动干预)。

对此有任何帮助。我不确定是否应该使用 Apache ActiveMQ。我正在使用 apache servicemix。

提前致谢。

0 投票
1 回答
293 浏览

java - java.util.concurrent.BlockingQueue 的实现

可能重复:
在 ArrayBlockingQueue 中,为什么要将最终成员字段复制到本地最终变量中?

查看 java.util.concurrent.DelayQueue 的实现,我看到了一个我不太理解的模式。

(*) 行(使用对字段的临时引用)的目的是什么,可以在 BlockingQueue 接口的方法实现中找到,其中涉及一些并发(锁)?考虑一下,如果锁定字段是最终字段,并且在字段初始化期间与其他最终字段一起分配。

0 投票
2 回答
234 浏览

java - 关于难以理解Java代码的两个问题

我在看Java源码,遇到两个小问题。我不知道Sun为什么要写这样的代码,这里有问题(JDK版本:1.6):

问题一:

为什么要在方法块中定义局部最终ReentrantLock变量,为什么不直接使用全局变量lock

问题2:

此方法java.text.NumberFormat#getInstance(Locale desiredLocale, int choice):创建一个DecimalFormat对象,但返回类型为NumberFormat. 为什么不将返回类型设为DecimalFormat

0 投票
1 回答
2871 浏览

java - 使用 ReentrantLock 实现 BlockingQueue

我正在编写自己的 BlockingQueue 实现以供练习。我试图避免对方法使用同步关键字。相反,我想使用 ReentrantLock。

编写此实现的最佳方法是什么?我不是 Java 忍者,如果有人能在此处查明我的代码中的错误并提出更好的实现方法,我将不胜感激。

谢谢你的时间!

0 投票
1 回答
2229 浏览

java - 同步队列?

我有两个线程用于制作在线游戏。一个线程接收两个 X 和 Y 数字,另一个线程将 X 和 Y 数字发送给登录到服务器的每个人。基本上我需要一个队列,这将允许第一个线程将 2D 数组添加到队列中,并继续这样做,同时拉出数组并从队列中删除数组以用于发送到其他玩家。有没有办法做到这一点?我知道我需要一个同步队列,但是我如何同步一个,这叫阻塞队列吗?

总的来说,我需要一个同步的队列,这将允许两个线程投入和取出东西。可能吗?

-担

0 投票
2 回答
1093 浏览

java - 插入时应为每个线程分配唯一的 id

我需要插入有两列的数据库 -

所以这意味着ID每次都应该是唯一的,否则duplicate row in unique index插入时会抛出异常。我需要在这个范围内选择 ID1-100000

所以这意味着每个线程应该始终使用唯一的 id-

下面是我编写的多线程程序,每次从ArrayBlockingQueue.

那么这个程序是否是线程安全的?或者有没有其他更好的方法来每次为每个线程获取唯一 ID?或者下面的程序会导致duplicate row in unique index

0 投票
1 回答
209 浏览

c# - C# BlockingCollection班级统计

我正在使用无界阻塞集合,使用 ConcurrentQueue 作为底层集合作为我程序的主要组件之一。
我正在寻找一种收集有关阻塞集合的消费行为的统计信息的好方法,例如,白天队列中的最大项目数,或者当队列建立时阻塞集合自行调整大小。
我是否遗漏了什么,或者我需要编写一个覆盖某些方法的继承类,以便向它添加更多使用统计信息?

0 投票
2 回答
1172 浏览

java - Java 中的 BlockingQueue 线程同步

我对 BlockingQueue 的概念不熟悉,并认为它不需要 wait() 和 notify()。我编写了以下代码作为线程同步的初步测试(为清楚起见省略了一些代码):

使用生产者类 EventGenerator。EventGenerator 从它的初始状态 (SC) 飞过所有状态,直到它到达门 AG:

消费类 Airline 将接收航班状态的每一次变化,并打印出来:

该项目编译并运行没有错误。但是,我期望(并希望)结果符合以下要求:

但相反,我几乎总是得到:

我是否错误地实现了 BlockingQueue?