Java中的无锁并发链表

Java中的无锁并发链表,java,concurrency,linked-list,Java,Concurrency,Linked List,我想使用一个链接列表,如本文所述。 但是,我没有在web上找到任何Java实现 如果不存在上述链表的java实现,我想我会使用java.util.concurrent.ConcurrentLinkedQueue。这是一个好的选择吗(它不是一个真正的链表) 如果这不是一个好的选择,那么有人知道Java中可靠的并发(线程安全的)无等待(无锁)链表实现吗?是一个极好的无锁队列,它完成了并发单链表所能做的事情。 一个小警告:如果不使用poll或peek,而只使用迭代器()(+.remove()),它将泄

我想使用一个链接列表,如本文所述。 但是,我没有在web上找到任何Java实现

如果不存在上述链表的java实现,我想我会使用
java.util.concurrent.ConcurrentLinkedQueue
。这是一个好的选择吗(它不是一个真正的链表)

如果这不是一个好的选择,那么有人知道Java中可靠的并发(线程安全的)无等待(无锁)链表实现吗?

是一个极好的无锁队列,它完成了并发单链表所能做的事情。 一个小警告:如果不使用poll或peek,而只使用迭代器()(+.remove()),它将泄漏内存


这是一个杰出的工具。

它不是任何形式的无锁工具(它确实使用锁来添加/删除)-doh目标注释消失了。。。(这是关于LinkedBlockingDeque的)好吧,最大的问题是,为什么你认为你想要任何形状或形式的并发列表?大多数列表方法在共享并发结构上没有意义。为什么要得到第n个元素?得到第n个元素意味着什么?像大小这样的东西是短暂的,除了用于监控之外没有任何价值。你能再解释一下你想怎么用这个吗?我想实现一个单例“物理”缓冲区,由n个“逻辑”缓冲区使用,其中每个逻辑缓冲区仅由其开始和结束元素s.t.定义。我的内存中没有冗余的数据表示。嗯,我仍然不明白您试图解决的问题,您只列出了一个解决方案。通常在并发算法中,您确实需要用内存交换隔离,但是协调对同一内存的访问和修改的成本可能会很高。参见Guy Steele,例如JDK 7有一个ConcurrentLinkedQue,比如说,我想要ConcurrentLinkedQue,安装当前的jdk7预览版本有多安全?实际上用Java实现它相当简单(都是queue,deque)。多亏了GC,才没有ABA。如果您有GC,则总体并发/无锁算法会容易得多。。。或者只是从JDK7获取源代码并在w/JDK6上运行它,您(很可能)需要不安全的,但如果您将代码放在引导路径中,这不是问题。为了确保我没有出错,我将检查最新的JDK7源代码,并告知代码是否可以安全地后端口(复制)到jdk6@betsss我觉得这太过分了。OP可以直接转到并下载jar。考虑到它将与Java7一起引入(很快就会上线),它应该是非常稳定的