Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无状态对象总是线程安全的?_Java_Multithreading_Concurrency - Fatal编程技术网

Java 无状态对象总是线程安全的?

Java 无状态对象总是线程安全的?,java,multithreading,concurrency,Java,Multithreading,Concurrency,在这方面,它指出: 无状态对象总是线程安全的 并给出以下类作为示例: @ThreadSafe public class StatelessFactorization implements Servlet { public void service(ServletRequest req, ServletResponse resp){ BigInteger i = extractFromRequest(req); BigInteger[] factors =

在这方面,它指出:

无状态对象总是线程安全的

并给出以下类作为示例:

@ThreadSafe
public class StatelessFactorization implements Servlet {
    public void service(ServletRequest req, ServletResponse resp){
        BigInteger i = extractFromRequest(req);
        BigInteger[] factors = factor(i);
        encodeIntoResponse(resp, factors);       // <-- isn't it possible for resp to be
                                                 //     modified by mult. threads at once?
    }
}
@ThreadSafe
公共类无状态分解实现Servlet{
公共作废服务(ServletRequest-req、ServletResponse-resp){
BigInteger i=extractFromRequest(req);
BigInteger[]因子=因子(i);

响应(响应、因素)这里的无状态对象是
无状态分解
类。它是无状态的,因为它没有自己的状态,即它没有实例字段。因此这个对象是线程安全的。
resp
是实现
ServletResponse
接口的另一个对象,它可能是线程安全的,也可能不是线程安全的
resp
的安全性没有讨论。

当您发出将由servlet处理的HTTP请求时,将调用其
服务
方法。如果您有多个客户端同时发出多个请求,则每个请求可能由不同的线程处理。但是,
ServletRequest
a的实例每个线程将接收的nd
ServletResponse
是不同的,因此您不会有多个线程修改这些对象的相同实例。每个线程修改它们自己的实例。当然,这不是通过您的servlet容器(例如Tomcat)magic实现的是在这种特定情况下为您处理线程创建和这些实例分配的线程


这是一个令人困惑的例子,因为你不能假设你总是可以在该方法中修改你想要的任何内容,并且所有内容都将是神奇的线程安全的。然而,这是一个有趣的例子,在现实世界的应用程序中,通常由多个线程执行。

我想这是有道理的,但它们似乎令人困惑将以此为例——因为调用
无状态分解
方法可能导致线程不安全的情况参数对我来说就不会那么混乱了。@b科索,我想这本书的作者想展示一些接近真实世界的例子。当然,我不能确切地说。谢谢你提供的额外上下文!