场景:
web app中,每个request都会有一个Thread去处理,但是多个request可能对应一个资源:userInfo,常用ThreadLocal来存储userInfo。
网上搜,ThreadLocal的定义,大概就是:让每个线程访问ThreadLocal的共享变量,互不影响。好像懂了又没懂?
不妨想想,为什么要有ThreadLocal?我简单理解为:决多线程访问共享变量安全。
设想一下,如果没有加以限制,两个线程去操作同一个变量可能会有问题,比如并发,死锁等等,当然你也可以用synchronized解决。如果不用呢,就靠ThreadLocal了。
ThreadLocal里面假如有一个变量a,他会给每个线程都提供一个副本a,这样,就可以使得每个线程就有自己的a,各线程操作自己的a也互相不影响。