`
ouyida3
  • 浏览: 48288 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

volatile等

    博客分类:
  • java
 
阅读更多
volatile
和synchronized一起比较会好理解。同一个变量,什么都不用,各线程处理时,变量值在同一时间,可能是不同的;volatile能保证同一时间,变量值是一致的;synchronized能保证修改变量值是一个一个线程排队来的(比如同一时间,线程1和线程2都读取了变量i=1,没有问题,但是不用synchronized,就会同时修改i,如果是i=6,这样是没有问题的,因为不依赖任何东西,如果是i++,就非常有问题了,两个线程,++两次,应该i=3,由于没有synchronized,各搞各的,可能最后值为2)。

volatile保证读一致,synchronized保证读写一致。
volatile修饰变量,synchronized修改方法/代码块。

还有一点对理解很重要,java有主内存,就是说每个线程会把变量保存在线程局部,用了volatile就只会保存在共享。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics