Java,补充迭代器或队列

标签 java multithreading

我正在开发一个涉及多个线程的项目。我有一个管理器类,其中包含我的线程用于计算等的模型列表。这是一个包含几个项目的基本同步数组列表。现在我希望每个线程获取不同的项目,当前未使用的项目,类似于队列。使用 foreach 是不可能的,因为我有更多的项目和线程。 1:20的比例。使用队列也是可能的,但我希望它能够补充,我不知道这是否是最好的方法。

我的问题是:我该如何解决这个问题。有些人已经建议使用同步迭代器,但这不适用于多线程......

编辑:这些项目不会改变。我只是不希望线程同时使用相同的项目。

最佳答案

听起来像 ConcurrentLinkedQueue就是您正在寻找的。多个线程可以安全地添加和删除,并且不需要对其进行迭代,只需轮询队列的头部以获取新项目,并且可以将新项目放入(提供)队列中。这与 @AdrianPang 描述的 BlockingQueue 略有不同,因为如果队列中没有任何内容,这里的线程将立即返回(返回 null)。您需要的确切集合取决于您想要的行为,但在这里使用一种或另一种类型的并发队列似乎很合适。

关于Java,补充迭代器或队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23399031/

相关文章:

java - 将一个字节分解为 8 位最简单?

python - 线程 Python 端口扫描器

创建动态数量的线程

java - `name` 作为 freemarker 中断中的变量名

java - JPA自动增量的差异

java - 哪种语言更适合抓包和处理

multithreading - Play 2.0框架-主应用程序周期的持久线程?

c# - 具有多线程访问的SQLitePCLRaw.provider.e_sqlite3.dll中的System.AccessViolationException或System.ExecutionEngineException崩溃

java - 一个字符串上有数百个正则表达式

java - jdom 文档的大小与单个变量的大小