Discuss / Java / 一点想法

一点想法

Topic source

给每个方法增加一个context参数非常麻烦,而且有些时候,如果调用链有无法修改源码的第三方库,User对象就传不进去了。

我在想:对于这种没法修改源码并依赖外部变量的第三方库,最终怎么把变量读进去还是得按照作者的设计走的。

学ThreadLocal的意义,我想一是知道了怎么设置一个作用域为线程内部的“全局变量”。二是碰到了某个库报错trace到、官方文档提到了ThreadLocal这个上下文机制的设计,我们不至于一头雾水。

这一类的上下文系统,包括通过properties等读取外部配置文件再塑造变量、JDBC中为DataSource使用的EJB的Context、甚至大大小小的静态变量,都是为了达成一个全局变量的效果。理解了这一点,就能理解到ThreadLocal是依靠于全局变量(尤指静态字段),动态的读取每个线程特定的个性化的值,来实现仅线程内部共享的”全局变量“这一需求了。

:)

#2 Created at ... [Delete] [Delete and Lock User]

👍


  • 1

Reply