【问题标题】:How do I share single list between two infinite loop threads?如何在两个无限循环线程之间共享单个列表?
【发布时间】:2015-11-30 12:04:08
【问题描述】:

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

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

【问题讨论】:

标签: java multithreading concurrency


【解决方案1】:

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

进一步阅读(深入了解非阻塞背后的理论)

【讨论】:

  • 感谢@Ross 分享这些有用的信息并编辑问题:)
【解决方案2】:

Java 的 ConcurrentLinkedQueue 似乎是 FIFO 有序队列的最佳选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 2018-10-22
    • 2011-01-18
    • 1970-01-01
    相关资源
    最近更新 更多