假设我正在运行多线程程序,服务器,并且它处理不同线程中的传入请求(每个请求一个)。我有一个RequestHandler对象,可以使用方法处理单个请求,
void handleRequest(Request r);
假设在线程之间重用单个RequestHandler对象没有并发问题。在为每个线程创建一个RequestHandler时,是否会有任何性能优势?或者在线程之间重用单个RequestHandler(每个都保持对同一RequestHandler的引用)更好?
编辑:响应杰克的回答 - 是的,我们假设handleRequest方法完全是线程安全的,不包含任何同步块或对象。
答案 0 :(得分:4)
如果handleRequest(Request r)
的实现是完全线程安全的并且它不包含任何同步块或对象,那么我认为单个共享对象与分离对象相比没有任何好处/劣势。
这意味着实现handleRequest
的对象当然没有任何可变状态。
每个线程都可以通过遵循其代码路径独立地进入方法,这对于多个对象是相同的,但是你会有不同的this
引用(除非方法是static
)。现在,如果代码是线程安全的,那么除非调用其他线程安全的方法,否则几乎不会通过隐式this
引用完成任何操作,因此它是等效的。