【问题标题】:How to make service threadsafe (restful)如何使服务线程安全(宁静)
【发布时间】:2021-01-17 16:22:48
【问题描述】:

使用 Spring Boot,我有一个服务类,它有一个私有字段。通过不同的方法读取和修改该字段。

@Service
...
   private int maxPoints

休息控制器使用该服务。恐怕不同的并行休息消费者会导致不同的线程,并且私有变量不是线程安全的。

用弹簧靴和休息装置确保螺纹安全的最佳方法是什么?

【问题讨论】:

    标签: java spring-boot rest


    【解决方案1】:

    默认情况下,您的服务被实例化为单例,这意味着在您的应用程序生命周期内您将只有一个该服务的实例。

    为了使“maxPoints”线程安全,您需要确保使用“maxPoints”的方法是线程安全的。最简单的方法是使用“同步”。 Java 中的同步块一次只能执行一个线程。

    public synchronized void changeMaxPoints() {
        ...
        // change maxPoints
        ...
    }
    

    第二种方法是使用AtomicInteger

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多