The volatile keyword is a type qualifier used to declare that an object can be modified in the program by something such as the operating system, the hardware, or a concurrently executing thread.

解决方案 »

  1.   

    和以前c中的概念一样的吧,就是不使用CPU缓存的变量每次读取时都再次从内存中读取出来,主要用在多线程中比方一个变量 a,线程1读取后放到寄存器中,如果下次再读本来寄存器中已经有了,但是它还需要从内存中再次读取,因为线程2可能已经修改了这个变量,但是如果没有被申明成 volatile那么就可能直接从寄存器中取得那个变量的值了比方下面这个例子全局变量
    int n = 1;线程1
    while(n == 1);线程 2
      ...
      n = 0;
      ...
    如果不使用volatile, 线程1可能永远死在循环中了尽管 n 会在 线程2中被设置成 0
      

  2.   

    谢谢楼上的老大,那么如果多线程的话,就必须声明变量为volatile,即使有同步的方法也要这么做,是么?
      

  3.   

    和同步没有什么关系的吧? 至于是否需要声明成volatile还是要看实际需要的吧并不是所有在线程中使用的全局变量都必须这样但像上面这样的例子是肯定要用volatile的