【发布时间】:2014-10-13 21:30:09
【问题描述】:
大量(每秒约 50,000 个请求)java web-app 我正在使用 ThreadLocal 来执行一个任务,该任务应该在每个请求范围内执行。
我可以使用 Spring 请求范围实现相同的效果,但我想知道哪个性能更好?
在代码中,使用 ThreadLocal:
private static final ThreadLocal<SomeClass> myThreadLocal = new ThreadLocal<SomeClass>();
对于每个http请求设置:
myThreadLocal.set(new SomeClass());
使用 Spring 请求范围:
@Component
@Scope("request")
public class SomeClass{
...
}
现在,什么会更贵:
myThreadLocal.get();
或
SpringContext.getBean(SomeClass.class);
不知道有没有人尝试过这样的基准测试?
【问题讨论】:
-
你也可以做基准测试。
-
但我的直觉告诉我
ThreadLocal会更快,如果实施得当的话。 -
基准测试给出了明确的答案,但即使您可能不知道 why ..
标签: java spring thread-local