021--ThreadLocal有什么用+面试题

VIP免费
2024-12-11 1 0 448.59KB 9 页 5.9玖币
侵权投诉
ThreadLocal 有什么用 + 面试题
什么是 ThreadLocal
ThreadLocal 诞生于 JDK 1.2 ,用于解决多线程间的数据隔离问题。也就是说 ThreadLocal
会为每一个线程创建一个单独的变量副本。
ThreadLocal 有什么用?
ThreadLocal 最典型的使用场景有两个:
ThreadLocal 可以用来管理 Session,因为每个人的信息都是不一样的,所以就很适
合用 ThreadLocal 来管理;
数据库连接,为每一个线程分配一个独立的资源,也适合用 ThreadLocal 来实现。
其中,ThreadLocal 也被用在很多大型开源框架中,比如 Spring 的事务管理器,还有
Hibernate Session 管理等,既然 ThreadLocal 用途如此广泛,那接下来就让我们共同看
ThreadLocal 要怎么用?ThreadLocal 使用中要注意什么?以及 ThreadLocal 的存储原
理等,一起来看吧。
ThreadLocal 基础使用
ThreadLocal 常用方法有 set(T)get()remove() 等,具体使用请参考以下代码。
ThreadLocal threadLocal = new ThreadLocal();
// 存值
threadLocal.set(Arrays.asList("老王", "Java 面试题"));
// 取值
List list = (List) threadLocal.get();
System.out.println(list.size());
System.out.println(threadLocal.get());
//删除值
threadLocal.remove();
System.out.println(threadLocal.get());
以上程序执行结果如下:
2
[老王, Java 面试题]
null
ThreadLocal 所有方法,如下图所示:
ThreadLocal 数据共享
既然 ThreadLocal 设计的初衷是解决线程间信息隔离的,那 ThreadLocal 能不能实现线程
间信息共享呢?
答案是肯定的,只需要使用 ThreadLocal 的子类 InheritableThreadLocal 就可以轻松实
现,来看具体实现代码:
ThreadLocal inheritableThreadLocal = new InheritableThreadLocal();
inheritableThreadLocal.set("老王");
new Thread(() -> System.out.println(inheritableThreadLocal.get())).start();
以上程序执行结果如下:
老王
从以上代码可以看出,主线程和新创建的线程之间实现了信息共享。
摘要:

ThreadLocal有什么用+面试题什么是ThreadLocal?ThreadLocal诞生于JDK1.2,用于解决多线程间的数据隔离问题。也就是说ThreadLocal会为每一个线程创建一个单独的变量副本。ThreadLocal有什么用?ThreadLocal最典型的使用场景有两个:•ThreadLocal可以用来管理Session,因为每个人的信息都是不一样的,所以就很适合用ThreadLocal来管理;•数据库连接,为每一个线程分配一个独立的资源,也适合用ThreadLocal来实现。其中,ThreadLocal也被用在很多大型开源框架中,比如Spring的事务管理器,还有Hibern...

展开>> 收起<<
021--ThreadLocal有什么用+面试题.docx

共9页,预览2页

还剩页未读, 继续阅读

声明:本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。玖贝云文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知玖贝云文库,我们立即给予删除!
分类:计算机 价格:5.9玖币 属性:9 页 大小:448.59KB 格式:DOCX 时间:2024-12-11

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 9
客服
关注