2013-04-05 149 views
1

这是我的家庭作业的问题之一:链表问题

什么是使用链表上的多线程程序,什么是另类的问题?

我回答如下,我将不胜感激任何其他建议:

的问题是缺乏并发性的 - 为了使用链表,我们将不得不使用就可以了锁,以便对它所保持的内部对象所做的更改将是可靠的(因为每个对象都持有对下一个对象的引用),一旦我们锁定了链表,我们基本上就是“关闭”与多个线程一起使用它的选项,另一种方法是阵列,因为我们可以分开锁定每个项目。

我完全不知道我的回答,有何意见?...

+0

看起来像一个合法和完整的答案给我。 – 2013-04-05 11:45:58

+0

我的猜测是你写的是老师正在寻找的东西。列表中的每个元素都包含对下一个元素的引用,如果有多个线程同时将元素添加到链接列表中,则这些引用可能不会同步 – 2013-04-05 11:48:37

回答

0

你的答案看起来不错。

如果迭代次数远远超过突变,替代品可能是CopyOnWriteArrayList(假设List就足够了)。

0

Java SE中没有线程安全的LinkedList版本,但您可以使用Collections.synchronizedList(List)创建LinkedList的同步代理。还有一个无锁定线程安全的java.util.concurrent.CopyOnWriteArrayList,但它是基于数组的,可以从其名称中看到。