volatile int Age = 10; public int GetAge() { return Age; }
如上例子,调用GetAge()得到的是“主”内存区域的Age数值。用volatile修饰后的变量不允许有不同于“主”内存区域的变量拷贝。换句话说,一个变量经volatile修饰后在所有线程中必须是同步的;任何线程中改变了它的值,所有其他线程立即获取到了相同的值。理所当然的,volatile修饰的变量存取时比一般变量消耗的资源要多一点;因此线程有它自己的变量拷贝更为高效。
volatile int Age = 10; public int GetAge() { return Age; }
如上例子,调用GetAge()得到的是“主”内存区域的Age数值。用volatile修饰后的变量不允许有不同于“主”内存区域的变量拷贝。换句话说,一个变量经volatile修饰后在所有线程中必须是同步的;任何线程中改变了它的值,所有其他线程立即获取到了相同的值。理所当然的,volatile修饰的变量存取时比一般变量消耗的资源要多一点;因此线程有它自己的变量拷贝更为高效。