Java 多线程并发修改异常

Java multithreading ConcurrentModificationException

我有几个运行并行的测试,并使用下面的方法。请查看下面的代码,它偶尔会抛出 ConcurrentModificationException。我不知道它是怎么发生的?


private static MyObject myObject; 

public void setupMyObject{
    syncronized(this){
       myObject = Optional.ofNullable(myObject).orElse(SomeConfig.ofDefaults());
    }
}


myObject是一个静态变量,要锁定它你需要把class对象放在synchronized中。您目前的实施没有正确锁定它。

import java.util.Optional;

public class Test {

    private static String myObject;

    public void setupMyObject(){
        synchronized(Test.class){
            myObject = Optional.ofNullable(myObject).orElse(SomeConfig.ofDefaults());
        }
    }

}