从代码中可以看出,在LinkedList
和ArayBlockingQueue
的情况下处理成员的所有权的方式存在差异。
(在其他方面也可能相同 - 但截至目前我只关注上述内容。)
在ArrayBlockingQueue
的情况下,所有权似乎从输入线程转移到提取线程 - 在LinkedList
中,放入对象的线程,甚至保持对它的引用在它被一个单独的线程(可能)检索之后。
我的理解是否正确?
为什么我们在行为上有这种差异?
(这里我使用实例和线程同义,因为实例将在特定线程中运行。)
答案 0 :(得分:2)
LinkedList
根本不提供任何线程安全性或同步。你自己负责这样做。
concurrent
包集合确实为集合本身提供了线程安全性,但您仍然负责管理您可能对集合中的对象进行的任何修改。
Java中没有对象“所有权”的概念。
答案 1 :(得分:0)
观看Oracle文档:
第一个是在cuncurrent subpackege中。 在第二个(LinkedList)中,您可以阅读“请注意,此实现未同步”。
这应该是您观察到的差异的原因。