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

时间:2015-11-30 12:04:09

标签: java multithreading concurrency

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

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

Java ConcurrentLinkedQueue似乎是您订购FIFO队列的最佳选择。