多线程程序中的链表问题



这是我的一个家庭作业问题:

在多线程程序中使用linkedlist有什么问题,有什么替代方案?

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

问题是缺乏并发性——为了使用链表,我们必须对它使用锁,这样对它所持有的内部对象所做的更改将是可靠的(因为每个对象都持有对下一个对象的引用),一旦我们锁定链表,我们基本上就"关闭"了在多线程中使用它的选项,另一种选择是一个数组,因为我们可以分别锁定每个项目。

我完全不确定我的答案,有没有什么建议?

你的答案看起来不错。

如果迭代远远超过突变,则可以选择CopyOnWriteArrayList(假设List足够)。

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

相关内容

  • 没有找到相关文章