单线程范围的Springbean在每线程上下文环境中的线程安全性

单线程范围的Springbean在每线程上下文环境中的线程安全性,spring,multithreading,scope,thread-safety,Spring,Multithreading,Scope,Thread Safety,我处理一个框架“X”,它启动多个线程,并从每个线程调用自写JAR库中的方法。我想从框架“X”和Spring中获得好处,所以我设计了从“X”调用的方法,该方法可以初始化Spring上下文。这样,我在每个线程中都有一个Spring上下文。我不能显示代码,所以这是案件的简要说明。一切都很好,只是我只是想知道一些情况: 这种情况是否意味着每个单例作用域bean都会自动成为线程安全的(frameworkx本身处理线程),因此我不必担心线程局部变量、局部变量,并且可以在不与实例变量同步的情况下做任何事情 在

我处理一个框架“X”,它启动多个线程,并从每个线程调用自写JAR库中的方法。我想从框架“X”和Spring中获得好处,所以我设计了从“X”调用的方法,该方法可以初始化Spring上下文。这样,我在每个线程中都有一个Spring上下文。我不能显示代码,所以这是案件的简要说明。一切都很好,只是我只是想知道一些情况:

  • 这种情况是否意味着每个单例作用域bean都会自动成为线程安全的(frameworkx本身处理线程),因此我不必担心线程局部变量、局部变量,并且可以在不与实例变量同步的情况下做任何事情
  • 在这种情况下,所有线程/spring上下文或bean类变量之间仍然共享的类变量是否成为上下文的局部变量? 如果你不介意的话,我还有一些其他的问题,稍后我会编辑这个问题。如果我在这里得到答案,也许我会写一些结论的简历。 提前谢谢大家

  • 不要为每个线程创建上下文。这基本上意味着您正在为每个线程加载完整的应用程序。加载一次,确保你的单例是线程安全的(不要保持状态),并使用一个实例。我想,这是一种假设的替代方法,但这是一种武士的方法,它“需要”额外的时间来处理它,正如我说的,我不能拒绝使用“出生”的框架而且这个框架可能会在不同的主机上并行运行,天生的线程和调用,我的库,所以这种行为对我来说变得更加不可预测。我想将上下文作为“入口点”类变量将为我提供每个主机上的上下文。但我的案子里还有其他的样板。。。我会记下你的问题作为答案,虽然那样会让我头疼,而且会花更多的时间。。。另外,由于我的库没有一个经典的入口点,而且FrameworkX生成的每个线程都调用jar库中的3个生命周期方法:init()、action()、end(),所以我必须为spring上下文创建一个单独的单例类,我猜如果您正在编写库,为什么还要依赖spring呢?使用常规java,不要使用spring。虽然使用spring可能会让您更容易,但作为一名库维护人员,这并不是为了使用您的库的人(特别是如果他们不使用spring,可能会更方便)。它不是一个通用术语中的库,我的意思是它不是一个可运行的jar,它是一个性能测试“库”:)所以我需要它尽快准备好,而且它不会离开墙壁)。尽管如此,我还是对所有其他最佳实践表示敬意,除了您提到的一个,因为所描述的情况)。无论如何,我想,我问的问题是合法的,不管我使用代码的目的是什么。因为这种情况不仅发生在我的特殊情况下。不要为每个线程创建上下文。这基本上意味着您正在为每个线程加载完整的应用程序。加载一次,确保你的单例是线程安全的(不要保持状态),并使用一个实例。我想,这是一种假设的替代方法,但这是一种武士的方法,它“需要”额外的时间来处理它,正如我说的,我不能拒绝使用“出生”的框架而且这个框架可能会在不同的主机上并行运行,天生的线程和调用,我的库,所以这种行为对我来说变得更加不可预测。我想将上下文作为“入口点”类变量将为我提供每个主机上的上下文。但我的案子里还有其他的样板。。。我会记下你的问题作为答案,虽然那样会让我头疼,而且会花更多的时间。。。另外,由于我的库没有一个经典的入口点,而且FrameworkX生成的每个线程都调用jar库中的3个生命周期方法:init()、action()、end(),所以我必须为spring上下文创建一个单独的单例类,我猜如果您正在编写库,为什么还要依赖spring呢?使用常规java,不要使用spring。虽然使用spring可能会让您更容易,但作为一名库维护人员,这并不是为了使用您的库的人(特别是如果他们不使用spring,可能会更方便)。它不是一个通用术语中的库,我的意思是它不是一个可运行的jar,它是一个性能测试“库”:)所以我需要它尽快准备好,而且它不会离开墙壁)。尽管如此,我还是对所有其他最佳实践表示敬意,除了您提到的一个,因为所描述的情况)。无论如何,我想,我问的问题是合法的,不管我使用代码的目的是什么。因为这种情况不仅发生在我的特殊情况下。