线程有单独的局部变量副本。我有一个创建哈希表对象的方法。两个不同的线程是否会有哈希表对象的两个不同副本?然后哈希表对象被传递给其他方法。
示例方法:
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 ?
我想你现在答案已经很清楚了,是的,不同的线程会有不同的哈希表
副本
关于java - 线程局部变量的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26757594/