java static静态方法的并发性

在做一个web项目的时候需要做一个通用类去处理一些问题,想到这个类很多地方都有用到,又不想每次都new一个,因此就定义了里面的方法是静态方法,然后又因为多个静态方法都用到了同一个对象,结果定义了一个类的全局变量让每个静态方法去调用它,刚开始没什么问题,后来项目上线没多久就挂了,最后发现这样做导致了多线程的并发问题,所以就想在这里记录一下…


下面是一个例子,例如:

public class TestUtil {

    private static User user=new User();

    public static void setName(String name){
        //在静态方法中调用了全局变量并进行了修改操作,线程不安全
        user.setUsername(name);
    }

    public synchronized static void setName1(String name){
        //在静态方法中调用了全局变量并进行了修改操作,使用了同步关键字,线程安全
        user.setUsername(name);
    }

}

总结:只要你的静态方法不访问全局变量和类的变量的话,就不会有并发问题


访问全局变量肯定会出现并发问题,这是毫无疑问的 
静态方法内部的变量,都是局部变量,每次调用静态方法时都会重新分配内存空间,所以是安全的


也就是是说只要你的静态方法不访问全局变量的话,就不会有并发问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值