java - 静态实例线程安全

标签 java multithreading

我有一个策略模式实现如下:

    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/

相关文章:

java - 使用 libgdx 绘制曲线

java - Lucene 4.3.1备份过程

Java - IF 'input' = 'this' {将数组中的字符串存储到变量中}

java - 用两个线程循环打印数字

java - Android - 铃声不会停止播放

java - 如何保持所有版本的RESTful接口(interface)在线?

java - 二叉搜索树 (BST) 中的多线程插入

java - java中两个线程如何相继访问同一个对象的两个方法

c++ - 简单的定制互斥锁失败

java - java同步方法是在对象上同步还是使用标志