说你有:
volatile boolean called = false;
这是
if ( !called && (called = true) ) { ... do once ... }
原子操作?
我知道 AtomicBoolean 。问题不在于此,所以试着抵制你的冲动。
答案 0 :(得分:2)
在一个天真的实现中,这可以归结为:
LOAD A ; called
NEG ; negate
BRF 1$ ; branch if false
LOAD 1 ; true
STOR A ; store into called
1$: ; do once
不完全原子,是吗? Java编译器可能会将NEG / BRF序列更改为BRT(如果为true则为分支),但这与您理性预期的帮助相同。
奇怪的问题。