ThreadLocal不好用?那是你没用对!(14)

简介: ThreadLocal不好用?那是你没用对!(14)

ThreadLocal 操作类:


/**
 * 用户信息存储类
 */
class UserStorage {
    // 用户信息
    publicstatic ThreadLocal<User> USER = new ThreadLocal();
    /**
     * 存储用户信息
     * @param user 用户数据
     */
    public static void setUser(User user) {
        USER.set(user);
    }
}


订单类:


/**
 * 订单类
 */
class OrderSystem {
    /**
     * 订单添加方法
     */
    public void add() {
        // 得到用户信息
        User user = UserStorage.USER.get();
        // 业务处理代码(忽略)...
        System.out.println(String.format("订单系统收到用户:%s 的请求。",
                user.getName()));
    }
}


仓储类:


/**
 * 仓储类
 */
class RepertorySystem {
    /**
     * 减库存方法
     */
    public void decrement() {
        // 得到用户信息
        User user = UserStorage.USER.get();
        // 业务处理代码(忽略)...
        System.out.println(String.format("仓储系统收到用户:%s 的请求。",
                user.getName()));
    }
}


以上程序的最终执行结果:


微信图片_20220120190030.jpg


从上述结果可以看出,当我们在主线程中先初始化了 User 对象之后,订单类和仓储类无需进行任何的参数传递也可以正常获得 User 对象了,从而实现了一个线程中,跨类和跨方法的数据传递


相关文章
|
存储 消息中间件 JavaScript
ThreadLocal 你真的用不上吗?
ThreadLocal 你真的用不上吗?
|
存储 缓存 Java
终于弄明白了ThreadLocal
ThreadLocal是Thread的局部变量,用于编多线程程序,对解决多线程程序的并发问题有一定的启示作用。
159 0
终于弄明白了ThreadLocal
|
存储 算法 Java
原来这就是比 ThreadLocal 更快的玩意?(上)
原来这就是比 ThreadLocal 更快的玩意?(上)
原来这就是比 ThreadLocal 更快的玩意?(上)
原来这就是比 ThreadLocal 更快的玩意?(中)
原来这就是比 ThreadLocal 更快的玩意?(中)
原来这就是比 ThreadLocal 更快的玩意?(中)
|
设计模式 Java C++
原来这就是比 ThreadLocal 更快的玩意?(下)
原来这就是比 ThreadLocal 更快的玩意?(下)
原来这就是比 ThreadLocal 更快的玩意?(下)
J3
|
存储 安全 Java
synchronized解析及锁膨胀过程,面试再也不怕了
synchronized解析及锁膨胀过程,面试再也不怕了
J3
540 0
synchronized解析及锁膨胀过程,面试再也不怕了
ThreadLocal不好用?那是你没用对!(7)
ThreadLocal不好用?那是你没用对!(7)
86 0
ThreadLocal不好用?那是你没用对!(7)
|
安全 Java
ThreadLocal不好用?那是你没用对!(3)
ThreadLocal不好用?那是你没用对!(3)
105 0
ThreadLocal不好用?那是你没用对!(3)
|
安全
ThreadLocal不好用?那是你没用对!(4)
ThreadLocal不好用?那是你没用对!(4)
113 0
ThreadLocal不好用?那是你没用对!(4)
ThreadLocal不好用?那是你没用对!(8)
ThreadLocal不好用?那是你没用对!(8)
113 0
ThreadLocal不好用?那是你没用对!(8)