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());
}
}
}
我有几个运行并行的测试,并使用下面的方法。请查看下面的代码,它偶尔会抛出 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());
}
}
}