問題描述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");
添加回答
舉報
0/150
提交
取消