小米最近在做社招面试,遇到了一位候选人,面试到 Java 并发时,聊到了 ThreadLocal,候选人一开始信心满满:“这个我会!” 结果,深挖几轮之后,发现这位候选人只会皮毛,甚至踩了不少坑……
于是,今天就和大家聊聊 ThreadLocal 这个面试高频考点,不仅让你能答出基础概念,还能讲出实际使用场景,让面试官对你刮目相看!
什么是 ThreadLocal?
想象一下,你去健身房办了一张私教卡,每次去健身房,教练都会给你专属定制的训练计划,而不会让你去练别人的计划。
ThreadLocal 就像这张 私教卡,它的核心作用就是:让每个线程都能拥有自己的专属变量,而不会影响到其他线程。
在 Java 代码中,我们通常用 ThreadLocal 来 存储每个线程独有的数据,避免线程之间的数据污染。来看一个最简单的例子:
运行结果: