ThreadLocal作为一个可以将数据进行线程隔离的解决方法,其本质还是将数据存放在各个线程对象中(数据存放在Thread的ThreadLocalMap threadLocals中);
那么为什么JDK不在设计的时候就使Thread对象具有保存线程上下文的能力呢?
比如可以这样:
[code="java"]public class Thread
{
...
private Map contexts = new WeakHashMap();
public void setContext(Object key, Object value)
{
contexts.put(key, value);
}
public void getContext(Object key)
{
contexts.get(key);
}
}[/code]
使用的时候Thread.getCurrentThread.getContext(key);简单方便
JDK实现者是出于什么考虑才这样设计的?