ThreadLocal主要的应用场景有二:
1:在多线程并发修改访问同一个共享变量时,可能会发生并发修改异常。为了防止多线程下对同一个资源访问产生未知的问题,可以为每个线程创建一个该变量的副本(其实就是为每个线程都单独创建一个实例),每个线程都拥有自己的副本,修改该副本并不影响其他线程的副本数据。然后每个线程可通过ThreadLocal对象的get方法即可直接获取到当前线程对应的副本。
如下,每个线程都去获取一次工具类的某个ThreadLocal对象,虽然此对象是用static修饰的,但是每个thread通过threadLocal的get方法获取的对象其实都是不一样的。即使修改了某个线程的threadLocal get的对象,其他线程的threadLocal保存的对象并不会改变。
2:同一线程调用的多个方法中,共享同一个变量。如用户信息,虽然可以通过参数的形式传给调用的方法,但是亦可以考虑使用threadLocal的方式。
参考文章:
https://blog.csdn.net/lambert00001/article/details/128025402
网友评论