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

 

相关内容

热门资讯

曝光一下!决战卡五星辅助,威信... 曝光一下!决战卡五星辅助,威信茶馆app插件,原来有挂(哔哩哔哩)1、威信茶馆app插件免费辅助多个...
分享一下!微信微乐小程序修改器... 分享一下!微信微乐小程序修改器,永胜联盟会封号吗,真是真的有挂(哔哩哔哩)1、许多玩家不知道微信微乐...
辅助一下!微乐小程序辅助脚本,... 辅助一下!微乐小程序辅助脚本,闲逸免费app辅助,切实真的是有挂(哔哩哔哩);该软件可以轻松地帮助玩...
教你一下!芒果辅助器安卓版,海... 教你一下!芒果辅助器安卓版,海盗来了辅助脚本,原来有挂(哔哩哔哩)1、玩家可以在芒果辅助器安卓版线上...
解谜一下!拱趴大菠萝运势,天天... 解谜一下!拱趴大菠萝运势,天天微友有辅助吗,本来真的是有挂(哔哩哔哩)天天微友有辅助吗透视方法中分为...
解谜一下!边锋干瞪眼ios辅助... 解谜一下!边锋干瞪眼ios辅助,皇豪互众控制系统,其实是有挂(哔哩哔哩)1、该软件可以轻松地帮助玩家...
曝光一下!欢乐茶馆挂,大菠萝辅... 曝光一下!欢乐茶馆挂,大菠萝辅助器,好像是有挂(哔哩哔哩)1、大菠萝辅助器公共底牌简单,大菠萝辅助器...
必备一下!四川游戏家园破解版,... 必备一下!四川游戏家园破解版,微乐家乡麻辣自建房辅助app,原来有挂(哔哩哔哩)1、完成微乐家乡麻辣...
总结一下!可乐辅助,威信茶馆解... 总结一下!可乐辅助,威信茶馆解码器,一贯真的是有挂(哔哩哔哩)该软件可以轻松地帮助玩家将威信茶馆解码...
详细一下!透视辅助工具,兴动休... 详细一下!透视辅助工具,兴动休闲辅助,一贯是真的有挂(哔哩哔哩)1、完成透视辅助工具辅助器v3.3的...