我有一个关于静态
方法中的变量的问题.
静态
方法中的变量共享相同的内存位置,还是会有单独的内存?
这是一个例子.
public class XYZ
{
Public Static int A(int value)
{
int b = value;
return b;
}
}
如果3个不同的用户调用执行方法A
XYZ.A(10);
XYZ.A(20);
XYZ.A(30);
与此同时.每个电话的返回值是多少?
XYZ.A(10)=?
XYZ.A(20)=?
XYZ.A(30)=?
它们仍然是本地变量 – 它们不在线程之间共享.事实上,他们在一个静态
方法没有什么区别.
如果你使用一个静态变量作为中间变量,那将是不安全的:
public class XYZ
{
// Don't do this! Horribly unsafe!
private static int b;
public static int A(int value)
{
b = value;
return b;
}
}
在这里,所有的线程将真正使用相同的b变量,所以如果你同时从多个线程调用该方法,线程X可以写入b,然后是线程Y,这样线程X最终返回由线程Y设置的值.