本期说一下ThreadLocal的相关面试题。
以下内容出自本人整理的面试秘籍。 点击此处,无套路免费获取面试秘籍
对ThreadLocal的理解?
答:
ThreadLocal是 Java 中的一个线程封闭机制,用于在多线程环境下实现线程级别的数据隔离。
从代码上看它奇妙的地方就在于,多线程对同一个ThreadLocal对象set操作,但是get获取的值还都是每个线程set的值。
-
ThreadLocalMap:每个线程都有一个 ThreadLocalMap 对象,它是 ThreadLocal 的实际存储结构。ThreadLocalMap 是一个自定义的散列表,用于存储 ThreadLocal 变量,其中的键是 ThreadLocal 对象,值是线程的局部变量值。
![alt](https://img-blog.csdnimg.cn/img_convert/c93b1e7d3e40156f509c30689a38f7c1.png)
-
ThreadLocal的set方法: 当调用 ThreadLocal 的 set 方法时,实际上是在当前线程的 ThreadLocalMap 中插入一个键值对,其中键是 ThreadLocal 对象,值是要设置的局部变量值。
-
ThreadLocal的get方法: 当调用 ThreadLocal 的 get 方法时,实际上是在当前线程的 ThreadLocalMap 中查找对应的 ThreadLocal 对象,如果找到了,就返回该对象的值,否则返回 null
-
ThreadLocal应用场景
-
线程间数据隔离,各线程的 ThreadLocal 互不影响
-
方便同一个线程使用某一对象,避免不必要的参数传递
-
Web应用中的用户身份信息传递: 在 Web 应用中,用户的身份信息通常需要在整个请求处理链中传递。使用 ThreadLocal 可以在每个线程中存储用户的身份信息,方便在整个请求处理过程中访问。
-
了解fastThreaLocal吗?
答:
FasfThreadLocal是Netty框架中的一个类,用于提供比标准‘ThreadLcoal’更快的线程本地变量支持。
在 Netty 中,FastThreadLocal 可以用于存储线程相关的状态信息,以提高多线程应用程序的性能。它的使用方式和 ThreadLocal 类似,但是在某些情况下,可能更适合高性能的网络应用场景。
简言之,FastThreadLocal是ThreadLocal在Nettty中的性能优化版。
工作日每天更新,周末随缘更新。
请关注我,以便及时获取最新内容哦!
本文由 mdnice 多平台发布