传递方法参数时java引用的工作方式

传递方法参数时java引用的工作方式,java,multithreading,Java,Multithreading,当将参数传递给方法时,java是否会创建对方法或方法的新引用 它是否使用现有引用传递给方法 Thread-1获取synchronized method1的锁,并传递“class-instance-variable”和class-instance-primitive-variable。 线程-2传递方法2传递相同的“类实例变量”和类实例原语变量 在这种情况下,引用是如何工作的?它是否为每次通过创建一个新的引用 引用只是一个地址值(对堆管理中固有的间接寻址进行模化)。讨论两个引用之间的差异就像讨论两

当将参数传递给方法时,java是否会创建对方法或方法的新引用 它是否使用现有引用传递给方法

Thread-1获取synchronized method1的锁,并传递“class-instance-variable”和class-instance-primitive-variable。 线程-2传递方法2传递相同的“类实例变量”和类实例原语变量


在这种情况下,引用是如何工作的?它是否为每次通过创建一个新的引用

引用只是一个地址值(对堆管理中固有的间接寻址进行模化)。讨论两个引用之间的差异就像讨论两个整数之间的差异——在它们占用的内存位置之外,如果它们是相同的值,那么它们之间就没有差异

您可能会感到困惑,因为您假设Java堆管理是引用计数的,在这种情况下,引用是独立的对象。事实并非如此;Java使用mark/sweep GC,引用只是一个指针


没有“新参考”。只有参考资料。线程与否。

否。这不是复制品。问题与参考文献有关,是创建新的参考文献还是使用现有的参考文献。您如何区分新的参考文献和相同的参考文献?为什么重要?阅读问题和答案。除非你没有正确地表述你的问题,否则这是一个完全重复的问题。事实上,线程和
同步的
是不相关的。除了链接的问题外,另请参阅关于的官方教程。方法是否同步对参数的传递方式没有影响。
public void synchronized method1(Class_Instance_Variables instanceVar, int classprimitive)
public void method2(Class_Instance_Variables instanceVar, int classprimitive)