volatile

1.

volatile关键字平常说的最多有两种作用:  1. 保存内存可见性  2.防止指令重排序.

2.

jvm在运行是会生成一条条的指令,在保证结果一致的情况下会重排序指令来优化速度,但是这会造成线程不安全的问题,所以可以定义volatile来防止jvm进行指令重排序.

3.

在多线程条件下,每个线程都有自己独立的工作内存,volatile关键字通过直接读写主内存来保证内存可见行.但是volatile只是能简化同步策略的验证,它不能保证变量的操作如  i++  等为原子性,所以必要情况下还是是用 synchronized关键字更稳妥一些.

posted @ 2019-11-04 22:10  随意的马蒂洛克  阅读(127)  评论(0编辑  收藏  举报