我有几个并行运行的测试,并使用下面的方法。请查看下面的代码,它偶尔会抛出ConcurrentModificationException。我不知道该如何发生?
private static MyObject myObject;
public void setupMyObject{
syncronized(this){
myObject = Optional.ofNullable(myObject).orElse(SomeConfig.ofDefaults());
}
}
myObject
是静态变量,要锁定它,您需要将类对象置于同步状态。您当前的实现无法正确锁定它。
import java.util.Optional;
public class Test {
private static String myObject;
public void setupMyObject(){
synchronized(Test.class){
myObject = Optional.ofNullable(myObject).orElse(SomeConfig.ofDefaults());
}
}
}