以下情况可能会导致竞争状况。我正在研究的问题是,在方法调用与对actionWasCompleted的原子调用之间是否存在上下文切换。
private final AtomicReference<ActionCompleted> actionWasCompleted;
public void actionWasCompleted(){
actionWasCompleted.compareAndSet(ActionCompleted.INITIAL, ActionCompleted.COMPLETED);
}
如果那是真的,那不是吗
public void actionWasCompleted(){
synchronized(this){
....
}
}
这是否意味着上面的代码和
public synchronized void actionWasCompleted(){
....
}
最佳答案
在方法调用和对actionWasCompleted的原子调用之间是否存在上下文切换。
上下文切换可以随时发生。
这是否意味着上面的代码和
该代码是等效的。在获得锁之前,一个或多或少不太可能进行上下文切换。
一个隐含的问题是; “有问题吗?”
在获得锁之前,可能会发生任何事情,但这是预期的行为。