考虑一个 Java 类 A
,其中 f
是 A
的一个 Integer
字段,并且 u
是 A
类中方法 foo()
的局部 Integer
变量。
class A{
int f;
void foo(){
int u;
...
f = 7;
u = f;
...
}
....
}
这样说是错误的吗:
variable ‘u’ MUST be 7 at the end of “f=7; u =f;”?
我的观点是“f”可能会被其他线程更改,所以上面的说法一般来说应该是错误的。我说得对吗?
感谢您的想法。
最佳答案
是的,执行可以在 f=7、u=f 之间中断。您将此称为关键区域,可以使用锁、互斥锁或信号量来保护它。通过这种方式,您可以确保没有其他线程(甚至硬件中断,在 Java 中不行;))更改您的数据而不一定需要它。
关于java - 关于简单 Java 程序的语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23386643/