ThreadLocal正确使用姿势,避免再掉坑 原创 2021-07-20 17:53:04.0 阅读(1214)次 今天为了不改变方法的参数,使用ThreadLocal在线程内传值,一不小心就掉坑里了,发现数据错乱了,原因是:我的业务要求不是所有线程都要执行ThreadLocal.set动作,但是所有线程都要执行ThreadLocal.get,而我没执行ThreadLocal.remove动作。造成get的时候会取到上一条的数据,于是就数据错乱了,这里记录一下,怕自己又忘记了。 贴一下正确姿势代码: ```java public class SendMessageRetryTheadLocal { private static ThreadLocal sendMessageLogStorager = new ThreadLocal(); public static SendMessageLog get(){ SendMessageLog log = sendMessageLogStorager.get(); return log; } public static void set(SendMessageLog log){ sendMessageLogStorager.set(log); } public static void remove(){ sendMessageLogStorager.remove(); } } ``` 调用ThreadLocal: ```java try { SendMessageRetryTheadLocal.set(log); ..... ..... a.get();//执行SendMessageRetryTheadLocal.get(); }catch (Exception e){ throw e; }finally { SendMessageRetryTheadLocal.remove();//记得remove,这样安全一点 } ``` java 上一篇:json转List数组泛型如何转以及Map的泛型? 下一篇:解决mybatis打印查询结果集造成太多日志的问题
相关文章 Thumbnails使用方法(java图片处理工具类)(1615) Base64编码出现换行符(2606) 线程安全测试 ArrayList Collections.synchronizedList CopyOnWriteArrayList(1514) json转List数组泛型如何转以及Map的泛型?(2724) java enum枚举转list和Map(9875) Jep实现Java表达式计算(2057) java数组转list(1065) bootstrap.yml配置报错:Could not resolve placeholder 'xx' in value (7076) Java实现Https发送get和post请求(2737) 阿里巴巴p3c代码规范eclipse插件(1554) 推荐文章 使用spring4实现websocket连接(1) Parameter index out of range (1 > number of parameters, which is 0(7) spring cloud+feign+mybatis中使用seata0.9实现分布式事务(7) spring cloud gateway报错Only one connection receive subscriber allowed(82) spring cloud中Feign调用诡异报错MethodNotAllowed: status 405 reading(116) elasticsearch7.1保存时报错: Validation Failed: 1: type is missing;(7) 聊聊数据保存到MySQL后数据乱码的问题(1) jquery对象与dom对象互转(1) linux使用epel源yum安装iftop、nload、nginx等(2) linux下nginx安装其他模块(1) 热门文章 java stream去重的几种方式(40819) the dependencies of some of the beans in the application context form a cycle(16324) 解决mybatis打印查询结果集造成太多日志的问题(9839) java enum枚举转list和Map(9722) java stream List转Map与List转List与Map转List以及List转Map(8468) ServletRequest转HttpServletRequest设置header之后取不到header的问题(8434) java中BufferedImage转成 base64字符串(8098) 切分List集合为多个List集合(7385) maven修改jar包版本不生效解决办法(6990) bootstrap.yml配置报错:Could not resolve placeholder 'xx' in value (6949) 标签列表 java java java java java java java基础 微服务 异常处理 mysql clickhouse clickhouse clickhouse clickhouse clickhouse spring cloud spring boot linux elasticsearch feign jdbc spring js docker postgresql solr seata nginx maven gateway hsqldb 数据库 架构 大数据分析 分布式事务 redis canal dubbo hadoop 消息队列 win10 websocket springmvc git html select2 mybatis jenkins rocketmq quartz activemq 数据库集群 ajax bat 电脑 笔记 eclipse 设计模式 阿里云 github freemarker jvm jquery javamail redission redission对象 hystrix http hibernate springmail svn ubuntu ueditor xheditor zookeeper 分布式 小程序 开发工具 gitlab