Java中关于volatile关键字的一些总结

来源:互联网 发布:淘宝开放平台 什么 编辑:程序博客网 时间:2024/05/20 23:31

前言:第一次写博客,心情有点小激动。以后要将在平时工作看书时的技术点总结下来,与各位网友分享,欢迎批评指正。

最近在工作时,发现之前的项目中有volatile关键字。然后自己查了点资料,对这个总结一下。

一、volatile确保了在应用中的可视性。

当我们对一个域用volatile修饰时,只要对这个域进行了写操作,其他所有的读操作都可以看到这个修改。不同的任务中,即便有本地缓存,这个被volatile修饰的域也会被刷到主存当中。

public class Demo {    private static volatile int number = 0;    //some code here    ...}

读取和写入都是直接针对内存的。

另外,如果这个域只能通过同步来访问,比如上面的number。同步也会导致向主存中刷新,因此,如果一个域有synchronized或同步语句块来防护,那这个域就不需要设置为volatile。