mvc单个请求处理线程不变

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/changyayun/article/details/89449489

mvc单个请求处理线程不变

问题

通过拦截器讲用户信息解析到threadlocal中,在后续的处理流程里面将这个用户的信息取出来

疑问

这个取到的用户信息一定就是现在所处理请求对应的用户信息吗,也就是说这个这个线程中途万一处理了别的请求那么thread local里面存的就是别的用户的信息了

思考

这种情况是不会发生的
一个线程从人物队列中取出一个请求处理,那么这个请求就不会再被别的线程在那去处理.
并且处理这个请求的线程在处理完这个请求之前是不会再去取别的请求的。考虑到线程处理了一半cpu时间片到了,线程进入等待状态,等再次获取cpu时间片的时候,会还原线程栈数据到cpu,这个时候必然是接着处理没处理完的请求。

结论

线程在处理一个请求的整个周期中thread local所存储的信息一直都是同一个请求的。线程中途是不会切换处理别的请求的

猜你喜欢

转载自blog.csdn.net/changyayun/article/details/89449489