threadlocal便是我昨天被问到自闭的一个面试题.
threadlocal的本质就是以空间换取时间.
在你需要多个线程资源隔离时,比如一套业务流程只能用一个连接,为了将线程连接隔离,你要用锁来,但这样效率就低的离谱.这个时候你就可以使用threadlocal.
这里就不说threadlocal的用法了,他的原理就是你在某个线程用到threadlocal时就会在当前线程中开启一个hash表,且无链表(这就意味着发生冲突,他只能卑微的判断下一个entry是不是空的(~ ̄▽ ̄)~)
而thradlocal就是key,这也就说你用一个threadlocal不管你怎么get,set他也只能存一个值,你想多存就要多创建threadlocal
使用场景
在线程需要各自私有实例时
实例需要在多个方法中共享,却要在各个线程中隔离