gpt4 book ai didi

java - 发送对象和线程同步

转载 作者:行者123 更新时间:2023-12-01 15:52:18 24 4
gpt4 key购买 nike

我读到,当将一个对象发送到函数/另一个对象时,发送的不是实际的对象,而是他的副本。因此,在多线程处理时,我有一个大小为 1 的 ArrayBlockingQueue 和两个类——生产者和消费者(它们是线程的扩展),它们相应地以这种方式读取和写入数据:

ArrayBlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>();
Producer add = new Producer(queue);
Consumer show = new Consumer(queue);

我不会向构造函数发送“queue”变量本身,而是它的副本。那么,这两个对象都有不同的队列,所以这两个对象之间不会有任何误解,对吗?如果是的话,为什么我们需要线程同步?如果不是,为什么?

最佳答案

I read that when sending an object to the function/another object, not the actual object is sent, but his copy.

这是不正确的。 Java 按值传递,但它按值传递引用。因此,队列引用的副本被传递给生产者和消费者。但是,引用的对象不会被复制。

关于java - 发送对象和线程同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5776693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com