前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JUC坑点记录

JUC坑点记录

作者头像
大忽悠爱学习
发布2021-12-24 15:14:19
2080
发布2021-12-24 15:14:19
举报
文章被收录于专栏:c++与qt学习

JUC坑点记录

tomcat中threadlocal使用采坑记录

tomcat默认使用线程池来管理线程,即当收到一个请求时,如果线程池存在空闲线程,则会从中取出一个空闲线程来处理该请求。当一个线程在处理请求时,其他请求就不会被分配至该线程。

例如有a,b,c三个空闲线程: 1、当request1到来时,分配a线程来处理 2、同时有request2到来,此时a线程在处理中,因此只有bc两个空闲线程,则会从中选一个处理request2。 3、request1处理完成,request3来了,则就可能分配给空闲线程a来处理。

问题来了,如果项目中使用了ThreadLocal,则在步骤1中会存入a线程对应的数据,步骤2中会存入b线程对应的数据,二者互不干扰。当到步骤3时,由于复用了线程a,因此request3这个请求处理过程中,可以直接通过ThreadLocal取到步骤1中放入的数据。

因此,在写代码时,注意在请求处理结束之前,把ThreadLocal中存入的数据清空,防止后续线程复用时造成干扰。

多线程之ThreadLocal在tomcat中运行的并发问题

java的服务是每收到一个请求就新开一个线程来处理吗 tomcat呢

ThreadLocal 详解

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/12/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JUC坑点记录
  • tomcat中threadlocal使用采坑记录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档