我对静态方法内的变量有疑问。
静态方法内的变量是否共享相同的内存位置,或者它们有单独的内存吗?
这是一个例子。
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)=?
它们仍然是局部变量 - 它们不在线程之间共享。事实上它们位于静态方法中并没有什么区别。
如果您使用了static变量作为中间变量,即would不安全:
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 设置的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)