page contents

高并发下,volatile对变量的控制为什么会有出入?

Pack 发布于 2020-02-24 15:24
阅读 706
收藏 0
分类:PHP开发

高并发下,volatile对变量的控制为什么会有出入?


当前代码并发量一千,确认无误。并发情况下对变量count进行递增,计算线程数量,使用volatile进行修饰代码如下,最终输出结果发现count并没有达到1000。


private volatile int count = 0;

public String save() {

    System.out.println(count++);

    return "success";

}

最终输出结果少了1000和999,其他的都已经打印了

435
Pack
Pack

count++ 并非原子性的哟。volatile不保证原子性的哈。你可以通aotmicInteger测试下incrAndset方法就知道了。
volatile只是保证可见性和一定的顺序性而已。

请先 登录 后评论