对象参数从外部无状态传递且线程安全的方法类是否安全?

上下文:我正在阅读Brian Goetz和其他人(对不起,其他人)的“ Java Concurrency in Practice”。在我的副本的开头

Route

(作者的代码示例为here,但在书中看起来就像我在上面添加的一样)

我的问题是:虽然“服务”方法具有对某些对象的一些外部引用,但它可能可以用它进行某些操作,例如更改其状态。因此,如果2个线程同时调用“服务”,则将从2个位置修改该状态,并且该类不是线程安全的。我对吗?

我提到的这本书是关于并发的。读者完全不了解HTTP和/或Servlet。我的书中的实例甚至没有说明“ StatelessFactorizer”实现的“ Servlet”是什么。因此,可以有任何假设,例如“您的方法正在使用不应该影响其他请求的不同对象”之类的假设。我的意思是您不知道“ extractFromRequest(req)”和“ encodeIntoResponse(resp,factor)”的作用。在本章讨论无状态时,我假设本章与Servlet无关。

wanyfkkk 回答:对象参数从外部无状态传递且线程安全的方法类是否安全?

基于该req and resp are stateless

  

无状态意味着所有请求都是彼此独立的,因此每个请求必须自己包含足够的信息才能满足请求。这意味着基于消息的HTTP模型的每个事务都将彼此分开处理。

您的方法使用的对象不同,不会影响其他请求

i是从获取无状态请求的方法派生的,因此它是无状态的

您可以对factors

应用类似的逻辑

因此,service方法是线程安全的

本文链接:https://www.f2er.com/3152292.html

大家都在问