Java 列表和队列中所有权模式的差异
从代码来看,在Java 列表和队列中所有权模式的差异,java,multithreading,collections,Java,Multithreading,Collections,从代码来看,在LinkedList和ArayBlockingQueue的情况下,处理成员所有权的方式似乎有所不同 (其他人也可能如此——但到目前为止,我只关注上述内容。) 而在ArrayBlockingQueue的情况下,所有权似乎从输入线程转移到提取线程-在LinkedList中,放入对象的线程即使在单独的线程(可能)检索到对象后仍保持对该对象的引用 我的理解正确吗? 为什么我们的行为会有这种差异? (这里我同义使用实例和线程,因为实例将在特定线程中运行。)查看Oracle文档: 您可以
LinkedList
和ArayBlockingQueue
的情况下,处理成员所有权的方式似乎有所不同(其他人也可能如此——但到目前为止,我只关注上述内容。) 而在
ArrayBlockingQueue
的情况下,所有权似乎从输入线程转移到提取线程-在LinkedList
中,放入对象的线程即使在单独的线程(可能)检索到对象后仍保持对该对象的引用
我的理解正确吗?为什么我们的行为会有这种差异?
(这里我同义使用实例和线程,因为实例将在特定线程中运行。)查看Oracle文档:
- 您可以看到,它们在线程安全方面是不同的
这应该是您观察到的差异的原因。LinkedList根本不提供任何线程安全或同步。你自己负责做那件事
concurrent
包集合确实在集合本身上提供了线程安全性,但是您仍然负责管理对集合中的对象所做的任何修改
Java中没有对象“所有权”的概念。一些代码可能有助于理解您的问题!有关相应的类,请参考JDK