0

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

void handleRequest(Request r);

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

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

4

1 回答 1

4

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

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

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

于 2013-09-19T02:10:36.187 回答