threadlocal的个人理解
ThreadLocal
之前看的一些教程,说了数据结构,说了实现用途,还举例了一些例子(simpledateformort,数据库连接)
但是一直没太理解,为什么new 一个threadLocal就能拿到他独有的资源。
但是现在看了以后,发现,好像是自己错了。
涉及到三个对象,thread,threadlocalmap,threadlocal。
说是说,一个thread持有threadlocalmap,threadlocalmap的key是threadlocal。
那么我们可以理解为,thread是一个旅馆,threadlocalmap是他里面的房间,钥匙是threadlocal。
那么我们newthreadlocal的时候,就是创建了一个钥匙,这个钥匙是开这个线程的这个房间的,你可以放东西。
然后你可以在new 几个threadlocal,就相当于多拿了几个钥匙,多开几个房间。但是你只是这家旅店的客户。
除非你不在这个线程了,不然,你能开房的只能是这个旅店的。
那么就很好理解了,为什么你用完不清楚,会内存泄漏,你钥匙删除了,房间东西可删除不掉。