`
iluoxuan
  • 浏览: 579774 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ThreadLocal

 
阅读更多

简单介绍一下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模式 

 

中;

分享到:
评论
Global site tag (gtag.js) - Google Analytics