当完成一个同步方法,它会推仅通过将其修饰以主存储器中的数据,或所有的成员变量,类似地,当一个同步方法执行时,将它的只读数据从主存储器需要或者将它清除所有在缓存中的成员变量和从主内存中读取它们的值? 例如
public class SharedData
{
int a; int b; int c; int d;
public SharedData()
{
a = b = c = d = 10;
}
public synchronized void compute()
{
a = b * 20;
b = a + 10;
}
public synchronized int getResult()
{
return b*c;
}
}
在上面的代码假定计算通过的ThreadA执行和的getResult由threadB执行。 计算的执行后,将的ThreadA更新与a和b的主存储器或将其更新的a,b,c和d。 和执行的getResult将threadB从主内存中得到的仅b值和C或将它清除缓存和所有成员变量a,b,c和d取值过吗?