之前一直使用ThreadLocal进行请求上下文的设置,只知道ThreadLocal是线程安全的每个线程获取的是本线程所对应的值,没有去深入了解ThreadLocal的具体实现,现在翻看转载的博客并参照源码,彻底明白了其原理,记录如下。
ThreadLocal存取原理分析
先看如下业务代码:
/**
* 应用基本上下文
* @author rambo.pan
*/
public class HttpContext {
/**
* 静态变量,作为各个线程中的Map的key,每个HttpContext实例为相应的value
*/
private static final ThreadLocal<HttpContext> currentContext = new ThreadLocal<HttpContext>();