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

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

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

 下边来看实例

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

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

下边附上源码

package com.example.pidog.threadLocal;


import com.example.pidog.domain.User;

public class UserThreadLocal {
    /**
     * 构造函数私有
     */
    private UserThreadLocal() {
    }

    private static final ThreadLocal<User> USER_INFO_THREAD_LOCAL =
            new ThreadLocal<>();

    /**
     * 清除用户信息
     */
    public static void clear() {
        USER_INFO_THREAD_LOCAL.remove();
    }

    /**
     * 存储用户信息
     */
    public static void set(User user) {
        USER_INFO_THREAD_LOCAL.set(user);
    }

    /**
     * 获取当前用户信息
     */
    public static User getCurrentUser() {
        return USER_INFO_THREAD_LOCAL.get();
    }

    public static Long getCurrentUserId(){
        return USER_INFO_THREAD_LOCAL.get().getUserId();
    }
}

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值