所以我来自C ++世界,其中将项目添加到容器时的标准行为是复制它。
我无法在ConcurrentLinkedQueue的文档中找到此信息,因此它可能是Java容器的基础。
通过add
方法将项目添加到队列时,项目是否已复制,或者只是对复制项目的引用?
我意识到通过复制引用来传递对象,但我并不认为add
方法可以在将其添加到队列之前创建副本,以确保线程安全。
另外,您是否可以提供相关文档的链接,以解释其工作原理?
答案 0 :(得分:1)
根据定义:当将java中的对象添加到容器中时,它将通过引用传递。
您可以在add方法中创建一个新的Object。例如:
list.add(new NewObject(oldObject));
而不是:
list.add(oldObject);
当然你需要适当的构造函数才能做到这一点。