1. 首页
  2. 移动开发
  3. 其他
  4. Java中的关键字volatile详解

Java中的关键字volatile详解

上传者: 2020-08-29 20:30:37上传 PDF文件 74.92KB 热度 24次

不过,volatile本身很容易被误用。线程访问自己栈内存的效率比访问堆的效率高。所以需要在flag标志上加一个volatile关键字。对于加了volatile关键字的变量值,线程1修改了这个值的话,会强制将修改值直接写入堆内存中,其他线程各自线程栈中的变量副本无效,只能去堆中取最新的变量值。总之不会影响最终执行结果。但是在多线程情况下,如下代码就会有风险:线程1的两条语句之间没有依赖性,经过指令重排后,有可能inited置为true以后,context还没有初始化。线程2发现inited为true,以为初始化完成,结束循环,用时间还没有初始化的context去执行doSomething()方法。所以我们可以用volatile关键字修饰inited,保证context初始化。

下载地址
用户评论