ITPub博客

首页 > IT职业 > > 多线程使用中单例变量和static变量的区别

多线程使用中单例变量和static变量的区别

作者:wyvernw 时间:2019-08-28 11:07:45 0 删除 编辑

今天看到一个多线程问题解决了以后想再优化一下,用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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    128
  • 访问量
    1296