春季安全出版

时间:2013-12-10 13:02:08

标签: java spring concurrency safe-publication

我知道有几次问了类似的问题,但我仍然找不到唯一真实的答案。

public class SimpleMovieLister {

  private MovieFinder movieFinder;

  public void setMovieFinder(MovieFinder movieFinder) {
      this.movieFinder = movieFinder;
  }
  //getter
}

为什么我们不让movieFinder变得不稳定? Spring的上下文是否有一些很好的魔力来建立SimpleMovieLister的安全发布? 或者某些线程可以在movieFinder方法调用上获得NPE?

实际上这answer澄清了我正在谈论的问题,但它没有说明Spring有能力阻止这个问题。所以我想知道是否有100%正确答案。

1 个答案:

答案 0 :(得分:1)

Spring确保在容器初始化完成后,可以从任何线程安全地访问您急切初始化的单例。

如果您有一个原型bean,由一个线程按需创建,然后发布到其他线程,那么您就自己的线程安全性而言。