Request和ThreadLocal

2023-10-26

Web容器中有三个周期 request/Httpsession/application
其中request是客户端发出的一个请求,这个request的载体就是一个 线程,实际等同于一个线程的生命周期。

Request是封装在线程上面一个抽象概念。

而ThreadLocal则相当于 多个线程的一个共享全局变量存储地,它里面保存的是和每个线程相关的状态。所以threadLocal是为线程服务的,和线程处于一个底层位置。

当一个线程或request结束时,threadlocal中的状态就没有了,所以threadLocal基本 类似request.setAttribute作用,threadLocal中的对象状态的生命周期等同于request.

 

使用ThreadLocal可以大量减少参数的传递,可以 使代码简洁,但是一定要明白,一个线程会绑定多个自己定义的局部对象,ThreadLocal是抽象在线程上的对象创建工厂,目前的Tomcat5使用了 线程池,一个线程处理一个request,这样ThreadLocal对象可以抽象的绑定在request生命周期,不会存在线程危机,而且线程池也平衡 了这些ThreadLocal对象的消耗,但是tomcat 6使用nio技术,一个线程可能会处理多个request,提高处理访问能力的情况下,ThreadLocal的使用将会出现问题,对象不再服务于一个 request,所以ThreadLocal的长期使用需要注意

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Request和ThreadLocal 的相关文章

  • 使用 REST API 进行正确的会话管理

    我已经完成了 RESTful API 的设计 其中我使用作为参数发送的 API 令牌对每个请求进行身份验证 现在我想创建一个客户端界面 我想知道什么是管理每个客户端的会话的正确安全方法browser客户 我想过一个流程来保持服务器端无状态
  • Electron 应用程序可以与 java 代码集成吗?

    由于node js仍然缺乏Java中存在的重要功能 因此我想使用Java而不是node js 并使用Web语言 html js css 创建客户端 Electron 是跨平台的 java 也是跨平台的 因此似乎有一个能够两全其美的解决方案
  • 从 Unity WebGL 调用 Angular2 函数

    目前 我正在使用 Angular2 版本 2 1 2 和 Unity 可视化工具 使用 Unity 5 5 构建 我需要做的是从 Unity 到 Angular2 进行通信 我正在使用类似于下面的代码 public void GetBill
  • 如何在 Intellij IDEA 中为 Apache Tomcat 指定自定义 JRE 路径?

    问题是如何指定自定义JRE路径为Apache tomcat in Intellij IDEA 当从以下位置启动应用程序时IDEA 看来 只需配置它的路径 路径jvm dll in Apache Tomcat监视器没有帮助 还有其他想法或方法
  • WebUSB 和 RFID 读取器

    我想知道是否有人有让 RFID 读取器通过 WebUSB 工作的经验 我使用的阅读器是https www parallax com product 28340 https www parallax com product 28340 根据我
  • 使用内容安全策略防止 Internet Explorer 11 上的内联 JavaScript

    是否可以使用 ASP NET WebForm 上的 CSP 来阻止 Internet Explorer 11 上的内联 JavaScript 我知道 IE 11 不支持内容安全策略级别 2 但它支持级别 1 0 我尝试了很多方法 但没有明确
  • 从 Web 服务器异步调用应用程序

    我有一个用 Spring 制作的 在 Tomcat 上运行的 Web 应用程序 在同一台机器上有一个普通的 Java 应用程序 我想通过从Web服务器调用Java应用程序来执行它 但我想让应用程序不会使用服务器的资源 它涉及分类器的训练 因
  • Jekyll 在子网站上生成静态网站?

    是否可以将 Jekyll 放在 GitHub 上托管的网站的单个部分上 即是否可以让 example github io 成为常规站点 而 example github io blog 由 Jekyll 静态生成 我相信可以通过创建另一个名
  • Ruby On Rails - 在控制器中使用关注点

    可能的菜鸟警告 刚接触 RoR 我正在尝试在 RoR 中使用关注点 现在我只写了一个非常简单的问题 app controllers concerns foo rb module Foo extend ActiveSupport Concer
  • Maven 多模块项目结构问题

    自从过去几周构建我的 Maven 多模块项目以来 这是我的一次有趣的经历 当我决定使用 Maven 进行构建生命周期管理时 我有几个原因希望选择 Maven A 大多数开发团队都是分开的 这样每个团队都可以在项目中的单独模块上工作 例如团队
  • Phonegap - cordova 在 Android 和 iOS 设备上延迟且缓慢

    我刚刚开始使用 zend studio 开始我的第一个 PhoneGap 项目 但是 在我构建并部署它之后 该应用程序非常慢 Android 和 iOS 均可 滚动滞后 如果我按下按钮 转到下一页的速度很慢 有什么办法可以提高它的性能吗 提
  • ant install 部署 Tomcat webapp 因权限问题失败

    我一直在关注非常好的Tomcat6应用程序开发人员指南 http tomcat apache org tomcat 6 0 doc appdev index html 我已经抓住了他们的build xml其中包含名为的方便的 Ant 任务i
  • 是否可以使 Spring Security 会话失效?

    我正在使用 Tomcat 6 0 32 Spring Security 3 0 5 在我的网络应用程序中 某些用户可以更改其他用户的权限 发生这种情况时 我想使权限已更改的用户的任何会话无效 这可能吗 如果可能的话怎么办 通常 您无法在更改
  • Web Api - 不允许捕获 405 方法

    截至目前 Web api 应用程序针对 405 方法不允许错误返回以下响应正文 我正在尝试更改响应正文 但我不知道如何使用委托处理程序 ApiControllerActionSelector 或过滤器 谁能帮我捕获服务器端的 405 错误
  • 我想创建处理程序来捕获 Tomcat 上 Web 应用程序的所有日志,并且

    我想创建处理程序来捕获 Tomcat 上 Web 应用程序的所有日志 我创建了我的 Handler 类 编译它并安装 CATALINA HOME lib and common loader有这个目录 之后我修改了logging proper
  • Eclipse 与 IntelliJ 热部署

    我的应用程序配置 Tomcat 8 Spring Spring MVC Hibernate 在 Eclipse 中 我创建了 Tomcat 服务器 并将我的应用程序添加到资源中 JSP JS CSS 和 JAVA 类热部署的工作原理就是这样
  • 如何在 tomcat 上部署 Java Web 应用程序 (.war)?

    我有一个 warJava Web 应用程序的文件 现在我想将它上传到我的 ftp 服务器 以便我可以执行它 我应该执行哪些步骤来运行它 webapp的上下文路径是 mywebapp Edit 实际上 我的 ftp 服务器名称是ftp bil
  • 由于 http 响应 405,无法执行 mvn tomcat:deploy

    我正在将 Tomcat 7 作为 Windows 服务运行 我想在我的项目根目录中进行 mvn tomcat 部署 但总是出现这个错误 你能帮我解决这个问题吗 INFO Deploying war to http localhost 808
  • 使用 Elastic Beanstalk 进行 Logback

    我在使用 Elastic Beanstalk 记录应用程序日志时遇到问题 我正在 AWS Elastic Beanstalk 上的 Tomcat 8 5 with Corretto 11 running on 64bit Amazon Li
  • IIS 8 HTTPS/需要 SSL 导致超时错误

    尝试通过 IIS 8 通过 SSL 发布网站 但出现超时错误 任何帮助表示赞赏 采取的步骤 已验证该网站可以通过 HTTP 访问 http xxx xxx xxx xxx有效 此时使用 IP 地址 如果重要的话 IIS gt 服务器证书 g

随机推荐

  • python新手怎么兼职-自学python可以做什么兼职

    很多朋友都会说 我身边有朋友或者同学是做程序员的 但是他们具体的工作内容 其实很多人是不了解的 这几年随着一些影视作品的出现 里面的主演有的从事开发工程师 大家初步有了一个印象 如果我不想去公司坐班 自己通过这个技能怎么来赚钱 推荐学习 P
  • 解决Unreal Engine 4.7.6的DerivedDataCache在C盘疯狂膨胀的问题

    打开 YourEngineFolder Engine Config BaseEngine ini 将 1 Local Type FileSystem ReadOnly false Clean false Flush false PurgeT
  • cnpm安装步骤

    安装nodeJS 官网下载 http nodejs cn download 选择其他版本下载地址 https nodejs org zh cn download releases 选版本点击下载 然后下载后缀名为msi 因为安装简单 选择好
  • 推荐学习方法——费曼技巧,以教促学,教学相长

    1 说到费曼技巧先来了解一下费曼这个人 费曼 全名理查德 费曼 美国著名物理学家 于1965年获得诺贝尔物理奖 在沉迷于美妙的物理世界的同时 他还热衷于教育事业 喜欢向人们深入浅出的讲解艰深的物理知识 在他的自传里 他提到曾纠结于某篇艰深的
  • java的反射机制

    Java的反射机制 1 定义 指程序可以访问 检测并修改本身的状态或行为的一种能力 并能根据自身行为的状态和结果调整或修改应用所描述行为的状态和相关的语义 简单来说 就是一种能自我修正的机制 2 意义 首先 反射机制极大的提高了程序的灵活性
  • 如何开启VT方法

    第 步 进入BOIS 重启电脑后 屏幕刚亮 笔记本一般快速按F1或F12 台式一般按DEL键 多按几下 成功后 会进入BIOS设置页面 第 步 找到 Intel Virtualization Technology 把 Disabled 修改
  • 跨平台方案Flutter入门——开发环境搭建

    目录 系统配置要求 获取 Flutter SDK 配置环境变量 安装 Android Studio 运行 flutter doctor 1 Anroid 的 SDK 路径 2 许可未同意 Android Studio 安装插件 Androi
  • 快来动手训练属于自己的聊天机器人吧!

    活动时间 北京时间2023年3月16日15 00 17 00 活动形式 在线直播 动手训练营 动手实践 使用 Amazon SageMaker 构建基于开源 GPT J 模型的对话机器人应用 难度 入门 时间 20 分钟 开发者可以使用 A
  • Python 遇到的问题

    目录 问题1 Pycharm 项目中 Cannot find declaration to go to 问题2 TypeError list indices must be integers or slices not tuple
  • 【C++】继承

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 继承的概念 二 被继承成员访问方式的变化 三 赋值兼容
  • 详解不带参数的 Math.max() 返回 -Infinity

    Math max 是内置的 JavaScript 函数 从给定的一组数字中返回最大值 其语法如下 Math max value1 value2 例如 让我们从 1 2 以及 3 中找到最大的数字 Math max 1 2 3 gt 3 正如
  • [架构之路-199] - 可靠性需求与可靠性分析:鱼骨图、故障树分析法FTA、失效模式与影响DFMEA,找到影响故障的主要因素

    目录 引言 第1章 故障树分析法与鱼骨图的比较 1 1 相同点 1 2 区别点 第2章 鱼骨图 第3章 故障树 3 1 示意图 3 2 故障树解读 3 3 故障树常见符号 第4章 产品失效 Failure 模式分析DFMEA 引言 目标系统
  • git The following paths are ignored by one of your .gitignore files: Use -f if you really want to ad

    git 右键或者命令add 文件或目录 不允许提交 提示 The following paths are ignored by one of your gitignore files Use f if you really want to
  • msvcp140.dll重新安装的解决方法(一键安装方法)

    msvcp140 dll电脑文件中的dll文件 即动态链接库文件 若计算机中丢失了某个dll文件 就会导致某些软件和游戏等程序无法正常启动运行 并且导致电脑系统弹窗报错 其安装方法 1 打开浏览器输入 dll修复程序 site 并下载安装m
  • 计算机二级准考证打印通道,2019年9月计算机二级准考证打印快速入口

    2019年9月份为全国计算机等级考试时间 各省从9月11日起陆续开始打印准考证 考生与9月8日起登入打印入口进行打印 考点报名者在考点领取即可 下面我们快来看看北京 上海 陕西 吉林等各省市的打印时间和打印入口在哪 1 各省计算机二级准考证
  • Redis 7 第九讲 微服务集成Redis 应用篇

    Jedis 理论 Jedis是redis的java版本的客户端实现 使用Jedis提供的Java API对Redis进行操作 是Redis官方推崇的方式 并且 使用Jedis提供的对Redis的支持也最为灵活 全面 不足之处 就是编码复杂度
  • Java 区块链BLOCKCHAIN中区块BLOCK的hash值的计算

    Java 区块链中区块的hash值的计算 计算方法有多种 如 可以直接String拼接 也可以用stringbuffer 或者stringbuilder 这里采用了速度较快的stringbuilder 自己编程的时候可采用stringbuf
  • 实验:使用SSMS创建并管理数据库及其基本表(代码版)

    目录 一 实验要求 1 使用SQL命令创建学生课程 SCC 数据库 2 使用SQL命令学生课程数据库中的学生表 S 课程表 C 选课表 SC 并保存关闭设计窗口 3 使用SQL命令修改基本表结构 即增加和删除列 4 使用SQL命令创建及管理
  • Everything+cpolar内网穿透轻松实现公网远程访问本地硬盘文件

    公网远程访问本地硬盘文件 内网穿透 文章目录 公网远程访问本地硬盘文件 内网穿透 前言 1 下载cpolar和Everything软件 3 设定http服务器端口 4 进入cpolar的设置 5 生成公网连到本地内网穿透数据隧道 总结 前言
  • Request和ThreadLocal

    Web容器中有三个周期 request Httpsession application 其中request是客户端发出的一个请求 这个request的载体就是一个 线程 实际等同于一个线程的生命周期 Request是封装在线程上面一个抽象概