A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 justin1258 于 2014-8-11 13:02 编辑

网上讲得大多都很晦涩难懂。

3 个回复

倒序浏览
volatile不保证线程同步,不保证各个线程按照你预期的某种先后顺序去访问volatile变量,它的作用是保证内存一致性。也就是说,某一个线程访问volatile变量并改变了它的值,那么这个改变将立即反映到内存中,此刻之后的线程再读取这个变量时,看到的就是这个已经改变过的值。
回复 使用道具 举报
fantacyleo 发表于 2014-8-5 21:42
volatile不保证线程同步,不保证各个线程按照你预期的某种先后顺序去访问volatile变量,它的作用是保证内存 ...

那什么情况下可以用这个关键字呢?能不能举个例子?
回复 使用道具 举报
justin1258 发表于 2014-8-5 21:58
那什么情况下可以用这个关键字呢?能不能举个例子?

多个线程要访问同一个变量,且其中至少有一个线程会修改变量的值,这个时候就要用volatile修饰变量了。当然,你也可以把这个变量变为私有,不让外界直接访问,而对外提供getter和setter方法,然后对方法加同步锁,这样的话就不用把变量设置为volatile了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马