gpt4 book ai didi

java - 是否应该为每个线程创建一个新对象?

转载 作者:行者123 更新时间:2023-12-01 18:43:37 25 4
gpt4 key购买 nike

假设我正在运行一个多线程程序,一个服务器,它处理不同线程中的传入请求(每个请求一个)。我有一个 RequestHandler 对象,可以使用方法处理单个请求,

void handleRequest(Request r);

假设在线程之间重用单个 RequestHandler 对象时不存在并发问题。每个线程创建一个 RequestHandler 会有任何性能优势吗?或者在线程之间重用单个 RequestHandler 更好(每个线程都维护对同一 RequestHandler 的引用)?

编辑:为了回应 Jack 的回答 - 是的,我们假设 handleRequest 方法是完全线程安全的,并且不包含任何同步块(synchronized block)或对象。

最佳答案

如果handleRequest(Request r)的实现是完全线程安全的,并且它不包含任何同步块(synchronized block)或对象,那么我看不到拥有单个共享对象的任何好处/坏处与分离的物体相比。

这意味着实现 handleRequest 的对象当然不具有任何可变状态。

每个线程都可以通过遵循其代码路径独立地进入该方法,这对于多个对象来说是相同的,但您将有不同的 this 引用(除非该方法是静态) >)。现在,如果代码是线程安全的,那么通过隐式 this 引用几乎不会执行任何操作,除非调用其他线程安全方法,因此它是等效的。

关于java - 是否应该为每个线程创建一个新对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18885180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com