为了账号安全,请及时绑定邮箱和手机立即绑定

ThreadLocal基础用法

ThreadLocal基础用法

Helenr 2018-08-10 14:05:13
问题描述ThreadLocal基础用法问题出现的环境背景及自己尝试过哪些方法小弟有一个业务场景是要在执行完基本逻辑之后将订单的信息通过存放到map中然后执行http推送到另一个平台,map里面有两个字段的信息是url地址和对方的接口地址(还有别的信息) 但是在实际推送的过程中这两个字段只是在方法内部用一下,并不包含在传输的json中,我是使用先put 然后再remove的方式从map中移除的,然后领导建议使用ThreadLocal保证代码侵入性很低 但是看了一上午没看出来实际怎么存放多个变量去使用ThreadLocal相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)    String a_key = data.get("a_key").toString();     String b_key = data.get("b_key").toString();     String c_url = data.get("c_url").toString();     data.remove("a_key");     data.remove("b_key");     data.remove("c_url");你期待的结果是什么?实际看到的错误信息又是什么?使用ThreadLocal来存放多个变量 请大神分析一下
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

ThreadLocal,是将变量与线程进行绑定,及在线程中保存一个ThreadLocalMap<ThreadLocal, T>,我看你这需求,想保存多个值,最简单的解决方案就是ThreadLocal中维护一个Map,然后由Map存放多个变量。
ThreadLocal<Map<String, String>> threadLocal = ThreadLocal.withInitial(()->new HashMap<String, String>());

    threadLocal.get().put("k1", "v1");
    threadLocal.get().put("k2", "v2");
    threadLocal.get().put("k3", "v3");    
    String v1 = threadLocal.get().get("k1");    String v2 = threadLocal.get().get("k2");    String v3 = threadLocal.get().get("k3");


查看完整回答
反对 回复 2018-08-12
  • 1 回答
  • 0 关注
  • 833 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信