java 成员变量的线程安全

           本文讲解的是关于java成员变量的线程安全问题,包括静态变量和实例变量。静态变量好理解,所有实例都共享一份内存,任何对静态变量的修改都会引发线程安全问题。然而,对于实例变量,在大多数情况下的访问和修改都是线程安全的。但是,当这个类,在系统里面被实现为单例模式时,由于整个系统中,只存在一份对象内存,所以,系统的各线程对该实例变量的修改则又会引发线程安全问题。这种情况别说是java新手容易犯的疏忽,就算是有一定经验的java程序员也会不小心地犯错,况且,有些时候由于知识范围或者其他原因,程序员根本不知道正在使用的实例就是一个单例(比如,从工厂中获取到的实例、struts1中的action、spring容器中默认的scope就是singleton等等)。

         下面使用代码对此说明。代码由三个类组成:FieldsVo 包含有两个成员变量(静态和实例的)用于在多线程中访问、FieldValueWatcher继承自Thread用于模拟对FieldsVo 类的访问、Test测试类。

          先来看看第一个VO类,很简单,只有两个成员变量:静态和实例,和两个对应的修改器和访问器

        

          线程检测类:FieldValueWatcher

        

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值