ThreadLocal有哪些应用场景?底层如何实现?
创始人
2025-01-08 10:34:32
0

1.如何使用?

public class ThreadLocalExample {     private static final ThreadLocal threadLocal = new ThreadLocal<>();      public static void main(String[] args) {         Runnable task = () -> {             threadLocal.set("Hello from thread " + Thread.currentThread().getName());             try {                 Thread.sleep(1000);             } catch (InterruptedException e) {                 e.printStackTrace();             }             String value = threadLocal.get();             System.out.println(value);             threadLocal.remove();         };          Thread thread1 = new Thread(task);         Thread thread2 = new Thread(task);          thread1.start();         thread2.start();     } }

2.如何理解?

每个thread线程上有一个threadlocalmap变量,用来存储当前线程的threadlocal数据。

当调用threadlocal的set或get方法时,本质上是操作本线程的threadlocalmap。key用来存储当前threadlocal,value用来存储值。

实际上,threadlocal只是用来操作当前thread线程threadlocalmap的工具类而已,threadlocalmap并不是存储在threadlocal中。

 3.注意哪些问题?

1.内存泄露/溢出:需要手动调用threadlocal.remove()来销毁

4.应用场景有哪些? 

1.多个场景需要用到同一种变量,但每个场景里所用到的变量值不同,需要相互隔离的。

2.隔离线程,存储一些不安全的工具对象。

3.spring中的事物。

4.springMVC中的httpsession,httpservletrequest,httpservletresponse

 

相关内容

热门资讯

黑科技黑科技“wepokeai... 黑科技黑科技“wepokeai代打”wepoke辅助插件好用吗(辅助挂)切实是有挂(有挂透视)-哔哩...
指导大家“wpk最新黑科技”线... 自定义wpk到底有没有外挂系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,...
玩家必备攻略!微扑克专用辅助器... 玩家必备攻略!微扑克专用辅助器,微扑克透牌(微扑克)其实是真的有挂(有挂方法)-哔哩哔哩;1)微扑克...
重大发现(德州ai辅助)德州辅... 【福星临门,好运相随】;重大发现(德州ai辅助)德州辅助软件开发定制(总是真的有挂)-哔哩哔哩;暗藏...
黑科技科技“wepoke智能a... 黑科技科技“wepoke智能ai”wepoke调控参数(ai辅助)真是是有挂(真实有挂)-哔哩哔哩1...
我来教大家!德州微扑克外挂,微... 我来教大家!德州微扑克外挂,微扑克透牌(微扑克)原来存在有挂(证实有挂)-哔哩哔哩1)德州微扑克外挂...
专业讨论!“wpk最新黑科技”... 专业讨论!“wpk最新黑科技”wpk发牌机制(WpK)一向是真的有挂(有挂方略)-哔哩哔哩1)wpk...
最新技巧(德州ai辅助)德州之... 最新技巧(德州ai辅助)德州之星透视外挂(本然真的是有挂)-哔哩哔哩;(需添加指定威信1367043...
黑科技美元局“wepoke透明... 黑科技美元局“wepoke透明黑科技”wepoke透明挂操作技巧(透明挂)本来真的有挂(有人有挂)-...
信息共享“wpk最新黑科技”w... 信息共享“wpk最新黑科技”wpk ai辅助购买渠道(WPk)总是是有挂(真是有挂)-哔哩哔哩您好,...