如果线程内有多个函数需要访问多个局部变量,则需要将这些局部变量作为参数分别传递给这些函数,这样传递参数就会很麻烦
ThreadLocal是一个全局变量,用来存放哥哥线程的局部变量,ThreadLocal中会维护
“某个线程--该线程内的某个局部变量名--局部变量值”
threadLocal真正做到了线程之间的数据隔离。
ThreadLocal不是用来解决线程共享问题的,主要提供了保存对象的方法和避免参数传递的仿版的对象访问方式
1.每个线程都有一个自己的ThreadLocalMap类,可以将线程自己的对象保存其中,各管各的,线程可以正确的访问到自己的对象。
2.讲一个共用的ThreadLocal静态实例作为key,将不同的对象饮用保存到不同的threadLocalMap中,然后在线程生命周期内执行的各处通过这个静态的ThreadLocal实例的get方法获取自己
线程保存的那个对象,避免将这个对象作为参数传递的麻烦。
各个线程中访问的时不同的对象,保证了线程安全,避免了参数传递。