当前位置:   article > 正文

java线程变量的使用以及应用场景_java 线程变量

java 线程变量

线程变量是存在于当前线程里的变量,在线程执行的某一时间放入线程变量,该变量会随着线程销毁而自行销毁。

 应用场景可以是处理一条消息队列,也可以是处理一个http请求

 下边来看实例

 我在拦截器里放入这样一行代码,该请求在经过拦截器时,将用户信息存放到线程变量中

然后我在下边直接引用,那么我的createBy 字段就是登陆人的昵称,因为我在接收某个用户的请求时,已经将用户信息放入线程变量了,那么直到我这个请求结束之前,我从任何地方取出的,就是当前线程的登陆人。

下边附上源码

  1. package com.example.pidog.threadLocal;
  2. import com.example.pidog.domain.User;
  3. public class UserThreadLocal {
  4. /**
  5. * 构造函数私有
  6. */
  7. private UserThreadLocal() {
  8. }
  9. private static final ThreadLocal<User> USER_INFO_THREAD_LOCAL =
  10. new ThreadLocal<>();
  11. /**
  12. * 清除用户信息
  13. */
  14. public static void clear() {
  15. USER_INFO_THREAD_LOCAL.remove();
  16. }
  17. /**
  18. * 存储用户信息
  19. */
  20. public static void set(User user) {
  21. USER_INFO_THREAD_LOCAL.set(user);
  22. }
  23. /**
  24. * 获取当前用户信息
  25. */
  26. public static User getCurrentUser() {
  27. return USER_INFO_THREAD_LOCAL.get();
  28. }
  29. public static Long getCurrentUserId(){
  30. return USER_INFO_THREAD_LOCAL.get().getUserId();
  31. }
  32. }

调用的时候直接静态调用就可以了  

UserThreadLocal.set(user)//在线程中存入用户

UserThreadLocal.getCurrentUser()//获取当前用户

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/220823
推荐阅读
相关标签
  

闽ICP备14008679号