Java 弹簧和螺纹安全
我正在研究java的包java.util.concurrent,我想到了以下问题:当使用Spring框架时,我应该担心多线程场景吗 例如,我有一个基于Spring Boot的API。我的一个rest服务更新ArrayList。但是ArrayList不是线程安全的,这可能会导致数据不一致。但是,我使用的是Spring框架Java 弹簧和螺纹安全,java,spring,multithreading,Java,Spring,Multithreading,我正在研究java的包java.util.concurrent,我想到了以下问题:当使用Spring框架时,我应该担心多线程场景吗 例如,我有一个基于Spring Boot的API。我的一个rest服务更新ArrayList。但是ArrayList不是线程安全的,这可能会导致数据不一致。但是,我使用的是Spring框架 问题是:我是否必须将当前的ArrayList更改为java的并发集合之一,或者Spring框架本身是线程安全的,我不应该担心多线程场景?您的REST服务应该编写成线程安全的。这意
问题是:我是否必须将当前的ArrayList更改为java的并发集合之一,或者Spring框架本身是线程安全的,我不应该担心多线程场景?您的REST服务应该编写成线程安全的。这意味着没有可变的私有数据成员。如果是这样,你就安全了 如果您的所有方法都使用方法范围变量,那么您是线程安全的 您应该知道,应用服务器将为传入的每个HTTP请求生成一个线程。如果您将服务编写为单线程服务,那么您就可以了 您应该始终担心多线程场景 如果您的REST服务必须与数据库交互,则不应共享连接。您需要一个池数据源,该数据源为每个请求签出一个连接,在方法作用域中使用该连接,并将其返回到池。JDBC连接不是线程安全的,但您可以避免它,因为您将它们集中在一起。SpringMVC(SpringBootRestServices)基于ServletAPI。Serlet是多线程的,因此必须注意并发性 但这取决于你是如何编程的。如果变量是类变量/类成员,则需要注意并发性,但如果变量是在方法中声明的,则这是线程安全的