关于ThreadLocal存储值的疑问

最近在看多线程ThreadLocal类,个人理解的是ThreadLocal的内部类ThreadLocalMap是一个Thread的成员变量,key是THread对象,value即需要存储的值;但是我疑问的是一个该线程共享变量只能存一个值吗?经过验证第二次的set是会覆盖第一次set的值;如果真的是只能存一个,想问下这个设计的原则是什么?查询了很多资料好像都没有说关于这一点的;

handler中的looper就使用到了ThreadLocal来保存和获取.目的是为了确保每个线程都有自己的唯一的looper,不会出现多个线程公用一个对象的情况,也可以避免一个线程创建多个此类对象.
最重要的特点还是保护了线程安全.

TLS不是用来共享的, 恰恰相反, 是用来隔离的。

首先楼主你看的不仔细,ThreadLocal内部类有个ThreadLocalMap,这个是在启动服务的时候就被实例,每次虚拟机发现ThreadLocal的时候,
都会把你当前的线程号和ThreadLocal放在ThreadLocalMap,key为线程号,值为ThreadLocal,你可以在ThreadLocal存放集合对象,这样你可以
放多个值在里面,为什么他是安全不会被共享,就是通过线程号来确定,当一个线程被使用的时候线程号不会重复

一个实例可以定义多个ThreadLocal变量,如果只有一个的话,就不合理了。

存一个和存多个有区别吗,你存一个map就去就OK了,
但确实是按线程id做为key映射的