ThreadLocal使用--緩存

在微服務中需要經常查詢一些共用的東西,比如當前登錄用戶id,不斷跨服務查詢會消耗性能,使用ThreadLocal緩存起來使用更方便

 

//存:
private ThreadLocal<String> currentUser= new ThreadLocal<>();

currentUser.set(userId);

//使用:
userId=currentUser.get();

//清除:
currentUser.remove();

因爲每個線程可能攜帶不同的userid發起請求,因此在這裏使用ThreadLocal變量存放userid,使得每個線程都有一份自己的副本。

參考官方文檔:ThreadLocal的用法,這個類提供“thread-local”變量,這些變量與線程的局部變量不同,每個線程都保存一份改變量的副本,可以通過get或者set方法訪問。如果開發者希望將類的某個靜態變量(user ID或者transaction ID)與線程狀態關聯,則可以考慮使用ThreadLocal。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章