【发布时间】:2011-04-04 07:35:45
【问题描述】:
是否有一个预先实现的链表可以使用 id 而不是数组索引来实现?
动机:我想在这里完成的是一个来自女巫单元的链表可以被并行的多个线程删除。 java 的 LinkedList 的问题在于引用是索引 ref。
澄清一下:假设我有三个线程和一个包含三个单元格的 LinkedList。 1号线程产生到1号单元格(或0,但无论如何......),......并且线程3号产生到3号单元格。所以基本上线程会产生作为缓冲区工作的单元格的东西。现在,如果线程 2 删除了单元 2(出于业务逻辑原因),线程 #3 的引用更改为 #2。当然,如果线程#3 仍在单元格#3 上工作,则无法做到这一点,因此需要同步,即使线程#3 当前没有使用它的单元格,仍然需要告知线程它将使用单元格#2 从现在开始。
解决方案:如果使用 id 而不是数组索引引用来实现链表,则其他线程将永远不会看到更改,即可以安全地删除第二个单元格,因为线程 #3 将使用它的单元格类似这样linkedlist.add(id 3, C cell) 而不是像这样的 add(int index, C cell)。
我想这样的东西已经在某个地方实现了,但是经过一段时间的谷歌搜索,我找不到它。感谢所有帮助!
【问题讨论】:
-
似乎您超出了此处为链接列表设计的范围..
-
LinkedList 的实现从不使用数组索引。为什么要使用索引而不是迭代器?
标签: java data-structures collections linked-list