简单介绍一下ThreadLocal的原理:
1.ThreadLocal会为每一个线程维护一个和该线程绑定的实例变量的副本
2.因为每一个线程都拥有自己独立的实例变量副本,而不会和其它线程的副本冲突
ThreadLocal的应用场合是按线程多实例(每个线程对应一个实例)的对象的访问,并且这个对象很多地方都要用到。
1: 在HttpServlet中, 是单实例多线程的,每个request的请求携带多个参数,这么把参数放到一个地方,然后可以再dao或者service层中取到呢: 一般的做法是一直传下去: ThreadLocal: public class LocalContext { private static final ThreadLocal <LocalContext> contexts = new ThreadLocal <LocalContext>(); private String uid; private String clientType; ..... public static LocalContext getContext() { LocalContext context = contexts .get(); if (context == null) { context = new LocalContext(); contexts .set(context); } return context; } }
把你公共的参数放到LocalContext, LocalContext模式
中;
评论