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。

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