这两天发现一个bug,使用parallelStreamm并行流执行任务,任务是调用其他方的一个接口,需要传递jwt。
第一次请求中使用的token A,没有问题。之后请求使用的token B。
但是每次请求都有大部分的请求还是使用的token A。
后来找到原因,因为使用了InheritableThreadLocal,所以第一次使用token A时,使用了ForkJoin common线程池,线程继承了第一次请求的token B。第二次请求时,虽然切换了token B,但是线程池中的线程不会销毁,重新使用这些线程,线程的内容则还是token A。