不同请求获取到了相同的ThreadLocal值引起的问题

来源:互联网 发布:mysql的事务隔离级别 编辑:程序博客网 时间:2024/05/22 04:23

问题:两个不同的请求,在获取ThreadLocal里保存的值时,获取到了相同的值。

原因:这两个请求共用了一个线程。

1、http1.1协议中的keep-alive是默认开启的,同一个会话中,有限的请求是共用一个长连接的。

2、tomcat默认使用线程池,所以一个线程的生命周期不能对等于一个请求的生命周期,线程池中的线程是可以被复用的。

解决方案:

1、保证每次都用新的值覆盖线程变量;

2、保证在每个请求结束后清空线程变量。


阅读全文
0 0
原创粉丝点击