Sweeping_Monk 2014-08-10 01:02
浏览 221
已采纳

关于Java ThreadLocal的疑问

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实现者是出于什么考虑才这样设计的?

  • 写回答

4条回答 默认 最新

  • renminzdb2 2014-08-11 14:55
    关注

    楼主你真的很搞笑,你这样就违背了数据的封装原则。Thread作为类,为什么要提别人保存属性啊 就好比一个people类,存放很多别人的名字一样 。首先threadlocal是一个类,但是他的使用原则,是有多个线程共同工作在一个环境下,如果乜有threadlocal类,那么在实际的编码中,我们很喜欢调用一个帮助类,来辅助解决这个问题的。如ThreadHelper之类的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题