gpt4 book ai didi

java - 线程的局部变量副本

转载 作者:行者123 更新时间:2023-11-30 07:05:22 34 4
gpt4 key购买 nike

线程有局部变量的单独副本。我有一个创建哈希表对象的方法。两个不同的线程会有两个不同的哈希表对象副本吗?然后将哈希表对象传递给其他方法。

示例方法:

public void exampleMethod(String a,String b, String c)
{

final Hashtable<String,String> parameterMap=new Hashtable<String,String>();
parameterMap.put("key1",a);
parameterMap.put("key2",b);
parameterMap.put("key3",c);

pqrsObject.takeRequest(parameterMap);

}

最佳答案

您示例中的哈希表 是一个局部变量,每次调用该方法时都会创建该变量。

那是因为每次你调用你的函数时

final Hashtable<String,String> parameterMap=new Hashtable<String,String>();

被调用,创建一个新的 hashtable 并将它放在 parameterMap 中。我不知道你需要 hashtable 做什么,但如果你在方法之外需要它,你可能想以其他方式在类上创建它

现在回答你的问题:

Threads have separate copy of local variables

嗯,不仅仅是线程。局部变量有一个减速范围。当您离开范围(在本例中为函数)时,局部变量将被删除。下一次调用将创建新变量,这意味着每次调用函数都会有不同的局部变量,即使它们的值相同

Will there be two different copies of hashtable objects for two different threads ?

我想你现在的答案很清楚了,是的,不同的线程会有不同的hashtable副本

关于java - 线程的局部变量副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26757594/

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