多线程程序的链表问题

时间:2013-04-05 11:43:58

标签: java multithreading linked-list

这是我的作业问题之一:

  

在多线程程序中使用linkedlist有什么问题,有什么选择?

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

  

问题是缺乏并发性 - 为了使用链表,我们必须对它使用锁定,以便对它所持有的内部对象所做的更改是可靠的(因为每个对象都保存对下一个对象的引用) ),一旦我们锁定链接列表,我们基本上“关闭”使用多个线程的选项,替代方案是一个数组,因为我们可以单独锁定每个项目。

我完全不确定我的回答,有什么建议吗?...

2 个答案:

答案 0 :(得分:0)

你的答案看起来不错。

替代品可以是CopyOnWriteArrayList(假设List足够),如果迭代远远超过突变。

答案 1 :(得分:0)

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