Java常见面试题:ThreadLocal

在整个Java中引用传递是一个核心的问题,也就是说几乎所有的问题都可能卡在引用传递上。
例如:反射机制里如果采用反射进行对象实例化,则要求类中要提供有无参构造方法。如果没有无参构造,就必须明确的传递一个参数(可能是各种类型)。你不得不去面对Constructor的操作形式。

范例:问题引出

Java常见面试题:ThreadLocal

整个过程之中属于一个最基础的引用传递。新的思考出现了,如果要求Send类中的set()方法里面不接收Message类对象,但可以传递Message。有人想到,采用一个中间过渡处理,设置一个static属性操作。

Java常见面试题:ThreadLocal

现在一个问题:java是多线程了,static保存的是全局数据区,属于公共的数据处理。这种操作在多线程处理中就会出现数据不同步的问题,最好的做法是在可以保存数据基础上再多保存一个当前线程对象。

Java常见面试题:ThreadLocal

这种操作就属于ThreadLocal类的作用,ThreadLocal在每一次设置内容的时候都会保存一个当前线程对象。
ThreadLoca操作里,开发中保存最多的是数据库的连接对象,因为几乎在业务层、数据层都可能使用到这种数据库的连接对象,所以将这种对象保存在ThreadLoca里面是最合适的。

更多专业知识,面试技巧就在阿里云开发者社区,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧

上一篇:Java常见面试题:ArrayList实现原理


下一篇:Java常见面试题:HashMap冲突