列表和队列中所有权模式的差异

时间:2013-12-12 11:40:07

标签: java multithreading collections

从代码中可以看出,在LinkedListArayBlockingQueue的情况下处理成员的所有权的方式存在差异。
(在其他方面也可能相同 - 但截至目前我只关注上述内容。)

ArrayBlockingQueue的情况下,所有权似乎从输入线程转移到提取线程 - 在LinkedList中,放入对象的线程,甚至保持对它的引用在它被一个单独的线程(可能)检索之后。

我的理解是否正确?
为什么我们在行为上有这种差异?
(这里我使用实例和线程同义,因为实例将在特定线程中运行。)

2 个答案:

答案 0 :(得分:2)

LinkedList根本不提供任何线程安全性或同步。你自己负责这样做。

concurrent包集合确实为集合本身提供了线程安全性,但您仍然负责管理您可能对集合中的对象进行的任何修改。

Java中没有对象“所有权”的概念。

答案 1 :(得分:0)

观看Oracle文档:

第一个是在cuncurrent subpackege中。 在第二个(LinkedList)中,您可以阅读“请注意,此实现未同步”。

这应该是您观察到的差异的原因。