ThreadLocal应用场景(一)

ThreadLocal,叫做线程本地变量,或叫做线程本地存储,ThreadLocal为变量在每个线程中都创建了一个副本,每个线程可以访问自己内部的副本变量。

应用场景:数据连接等线程私有对象

  • Mybatis 中用到的ThreadLocal,如下:
private static final ThreadLocal LOCAL = new ThreadLocal();
 public static ErrorContext instance() {
    ErrorContext context = LOCAL.get();
    if (context == null) {
      context = new ErrorContext();
      LOCAL.set(context);
    }
    return context;
  }

保证了ErrorContext 对象的线程单例;

  • 数据库连接池中,将Connection对象方法Threadlocal中,保证线程安全与事务;
  • 同理,在实现redis事务中,也可以用Threadlocal保存Multi对象;

你可能感兴趣的:(mabatis)