我有一个策略模式实现如下:
public class ConcreteStrategy implements Strategy {
public static final Strategy INSTANCE = new ConcreteStrategy();
public AClass execute(AClass aClass){
//...do somthing
return aClass;
}
}
忽略返回输入参数的不良做法,静态实例 INSTANCE 使用线程安全吗?
最佳答案
假设 ConcreteStrategy
未被修改,或者仅以线程安全的方式修改,那么是的。 final
修饰符将确保(在 Java 1.5+ 中)所有线程看到的 INSTANCE
对象至少处于类初始化时的状态。对对象的任何后续更改都需要以通常的方式实现线程安全(通过 volatile 、同步、提供线程安全的类等)。
关于java - 静态实例线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9211849/