首页文章正文

threadlocal应用场景,java线程池面试题

java的threadlocal 2023-12-21 12:51 608 墨鱼
java的threadlocal

threadlocal应用场景,java线程池面试题

其实在实际的业务场景中不一定在堆上。因为如果ThreadLocal被定义成了static的,ThreadLocal的对象是类ThreadLocal三种使用场景

并发多线程场景下,每个线程Thread,在往ThreadLocal里设置值的时候,都是往自己的ThreadLocalMap里存,读也是以某个ThreadLocal作为引用,在自己的map里找对应的key,从而可以实现了线程总的来说,ThreadLocal 适用于每个线程需要自己独立的实例且该实例需要在多个方法中被使用,也即变量在线程间隔离而在方法或类间共享的场景。后文会通过实例详细阐述该观点。另外,该场景下,并非必须

往ThreadLocalMap里面放值// ThreadLocal类里面的方法,将源码整合了一下publicvoidset(Tvalue){Thread t=Thread.currentThread();ThreadLocalMap map=t.threadLocals;if(map!=null)map.set(this,JDK对ThreadLocal的定义如下:TheadLocal提供了线程内部的局部变量:每个线程都有自己的独立的副本;ThreadLocal实例通常是类中的private static字段,该类一般与线程状态相关(或线程上下文)中使用。

inheritablethreadlocal应用场景inheritablethreadlocal主要用于一些多线程环境下需要保证线程之间共享数据的场景,例如:1.在一些框架中,开发者在一个线程中设置的数据需要ThreadLocal API 使用ThreadLocal 其实非常简单,直接看下面的示例:publicclassThreadLocalSimpleDateFormat{ privatestaticfinalThreadLocal formatter =

>0< 在通常的业务开发中,ThreadLocal 有两种典型的使用场景场景1: ThreadLocal 用作保存每个线程独享的对象,为每个线程都创建一个副本,这样每个线程都可以修改自己所拥有的副本,而不使用场景直接定位到ThreadLocal 的源码,可以看到源码注释中有很清楚的解释:它是线程的局部变量,这些变量只能在这个线程内被读写,在其他线程内是无法访问的。

后台-插件-广告管理-内容页尾部广告(手机)

标签: java线程池面试题

发表评论

评论列表

灯蓝加速器 Copyright @ 2011-2022 All Rights Reserved. 版权所有 备案号:京ICP1234567-2号