问题:两个不同的请求,在获取ThreadLocal里保存的值时,获取到了相同的值。
原因:这两个请求共用了一个线程。
1、http1.1协议中的keep-alive是默认开启的,同一个会话中,有限的请求是共用一个长连接的。
2、tomcat默认使用线程池,所以一个线程的生命周期不能对等于一个请求的生命周期,线程池中的线程是可以被复用的。
解决方案:1、保证每次都用新的值覆盖线程变量;
2、保证在每个请求结束后清空线程变量。
问题:两个不同的请求,在获取ThreadLocal里保存的值时,获取到了相同的值。
原因:这两个请求共用了一个线程。
1、http1.1协议中的keep-alive是默认开启的,同一个会话中,有限的请求是共用一个长连接的。
2、tomcat默认使用线程池,所以一个线程的生命周期不能对等于一个请求的生命周期,线程池中的线程是可以被复用的。
解决方案:1、保证每次都用新的值覆盖线程变量;
2、保证在每个请求结束后清空线程变量。