前言
ThreadLocal 提供了线程的局部变量,每个线程在对局部变量进行操作时,不会与其他线程的局部变量发生冲突,从而实现线程的数据隔离。那么,在了解了 ThreadLocal 的基本原理后,请大家思考一个问题,ThreadLocal 到底能做些什么呢?
用途
ThreadLocal 能让我们持有一个只有当前线程可见的变量,这有什么用呢?
管理 Connection
在与数据库进行交互时,频繁创建和关闭 Connection 是非常耗费资源的,故我们需要创建数据库连接池。那问题来了,我们应该如何管理数据库连接池里面的 Connection 呢?交给 ThreadLocal 来管理还是挺方便的,为啥?因为 ThreadLocal 能够保证当前线程的操作都是用同一个 Connection,从而保证了事务。
public class DBUtil {
// 数据库连接池
private static BasicDataSource source;
// 管理不同线程的连接
private static ThreadLocal<Connection> local