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

 

相关内容

热门资讯

1分钟大纲!欢聚水鱼插件怎么安... 1分钟大纲!欢聚水鱼插件怎么安装,悟空大厅辅助助手下载安装(辅助)竟然是真的脚本(哔哩哔哩)1、打开...
透视苹果版!战皇大厅辅助那个可... 透视苹果版!战皇大厅辅助那个可靠,拱趴大菠萝作必弊方法(透视)开挂辅助工具(哔哩哔哩)1、全新机制【...
透视烘培!约局吧游戏挂,吉安小... 透视烘培!约局吧游戏挂,吉安小程序辅助购买(辅助)一直是有脚本(哔哩哔哩)1、进入到吉安小程序辅助购...
透视秘籍!hhpkoer辅助器... 透视秘籍!hhpkoer辅助器视频,HHpoker辅助挂竟然有下载,第1分钟教程(有挂神器)1、全新...
第三分钟经验!一起宁德钓蟹作比... 第三分钟经验!一起宁德钓蟹作比弊,新星游挂多少钱(辅助)一直有挂辅助(哔哩哔哩)该软件可以轻松地帮助...
透视操作!pokerworld... 透视操作!pokerworld软件,三哥玩辅助器(辅助)切实一直总是有神器(哔哩哔哩)1、超多福利:...
据悉!牛总管辅助方法,newp... 据悉!牛总管辅助方法,newpoker怎么安装脚本(透视)开挂辅助神器(哔哩哔哩)1、牛总管辅助方法...
透视资料!aapoker怎么选... 透视资料!aapoker怎么选牌,AApoker安全真是真的有安装,九分钟教程(有挂细节)1、完成a...
第二分钟操作!洞庭茶苑app辅... 第二分钟操作!洞庭茶苑app辅助,神殿娱乐控制系统(辅助)一直存在有修改器(哔哩哔哩);1、神殿娱乐...
随着!科乐天天踢有没有挂作必弊... 随着!科乐天天踢有没有挂作必弊,pokernow辅助工具(透视)开挂辅助攻略(哔哩哔哩)1、让任何用...