java - 如何在两个无限循环线程之间共享单个列表?

标签 java multithreading concurrency

我有数据结构(即队列、堆栈或列表)。有一个无限循环(在线程 1 中)将对象插入到该数据结构中,还有另一个无限循环(在线程 2 中)从该数据结构中获取对象并对其进行一些处理。我不希望处理循环阻塞插入循环。

如何在 Java 中正确执行此操作,以在两个线程之间共享单个数据结构,并从两个不同线程进行同步和并发读/写?我可以使用java并发API(java 7)中的任何数据结构吗?有什么建议可以解决这个问题吗?

最佳答案

您正在寻找的是 non-blocking data structure ,比如说ConcurrentLinkedQueue 。它将接受队列条目并向其发出请求,而不会阻塞,这使得它非常simple to use没有实现任何花哨的东西。

延伸阅读(深入非阻塞背后的理论)

关于java - 如何在两个无限循环线程之间共享单个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33998244/

相关文章:

java - 使用深度优先搜索迭代回溯

java - 有没有一个并发队列可以让N个消费者分别消费N次这个item?

C++ Producer Consumer,同一个消费者线程抓取所有任务

c++ - 前摄器 VS react 器

java - 用于测试多线程 Java 应用程序的确定性记录/重放框架

java - 在多线程编程中,同步是否剥夺了并发执行的好处

java - MongoDB 使用聚合框架计算字段为 true 的次数

java - 使用 jar 文件的循环复杂度

用于字符序列生成器的 Java 库

c - 修改彼得森算法