首页 > IT职业 > > 多线程使用中单例变量和static变量的区别
今天看到一个多线程问题解决了以后想再优化一下,用static代替单例获取变量:
class Test3 {
private static Test3 t;
public volatile int temp = 128;
public static synchronized Test3 getInstance(){
if(t == null){
t = new Test3();
}
return t;
}
}改为:
class Test3 {
public static int temp = 128;
}然后发现线程执行temp累加,
10次结果是对的
100次后找不到228,只能找到227,temp结果大致是正确的的
随着循环次数的增加重复的数字就越多,
这是为什么,
static修饰的类变量不是只有一个内存地址么,那和使用单例获取有什么区别(使用单例获取变量一切正常)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/835/viewspace-3120331/ ,如需转载,请注明出处,否则将追究法律责任。