ThreadLocal在J2EE轻量级开发中的应用

ThreadLocal的介绍+经典应用场景 ????作者小三是刚刚毕业不久全栈工程师,写的技术文章基本上是学习过程中笔记整理而来,大家看了之后如果喜欢可以给小弟点点赞哦。????例外小弟还有个程序员交流群,欢迎各位大佬来摸鱼哈。点击加群 什么是ThreadLocal ThreadLocal又叫做线程局部变量,全称thread local variable,它的使用场合主要是为了解决多线程中因为数据并发产生不一致的问题。ThreadLocal为每一个线程都提供了变量的副本,使得每一个线程在某一时间访问到的并不是同一个对象,这样就隔离了多个线程对数据的 阅读详情

ThreadLocal 相当于一个容器,在这个容器中保留了一个个的变量,每一个变量是为每一个线程单独存放。

在J2EE轻量级开发中,一般我们分为Action、Service、Model这几层,Action层一般是多态的,所以一般线程安全。而Service和Model是单例的,在这两个层里面一般不会放全局变量,因为这很容易因为多线程造成数据混乱。这时可以用ThreadLocal。

 

public class ShardInfoLocal {

	//这是一个ThreadLocal
	private static final ThreadLocal<ShardInfo> tl = new ThreadLocal<ShardInfoLocal.ShardInfo>();
	
	//设置ThreadLocal
	public static void set(Institutions i){
		ShardInfo si = new ShardInfo();
		si.setPrimaryInstitution(i);
		si.setShards(i.getShardName());
		tl.set(si);
	}
	
	//移除ThreadLocal
	public static void unset(){
		tl.remove();
	}
	
	//获取ThreadLocal
	public static String firstShard(){
		ShardInfo si = tl.get();
		if(si != null){
			return si.getShards()[0];
		}
		return null;
	}
	
	//ThreadLocal要存放的东西
	public static class ShardInfo{
		private Institutions primaryInstitution;
		private String[] shards;
		public Institutions getPrimaryInstitution() {
			return primaryInstitution;
		}
		public void setPrimaryInstitution(Institutions primaryInstitution) {
			this.primaryInstitution = primaryInstitution;
		}
		public String[] getShards() {
			return shards;
		}
		public void setShards(String... shards) {
			this.shards = shards;
		}
	}
}
javaEE轻量级框架应用与开发——随书代码 该代码是javaEE随书代码,来自清华大学出版社的javaEE轻量级框架应用与开发 立即下载

相关推荐

javaEE轻量级框架应用与开发--S2SH

作 者:QST青软实训 编著 出 版 社:清华大学出版社。Spring+Struts2+Hibernate完整项目,扩展SpringMVC,mybatis。实体书,感觉还不错,某东最低售价43。官网亦可下载。

在j2ee服务器端,小心使用threadlocal!!!

如果使用treadlocal变量,则可能发生干扰,例如用户1发起请求,tread1为其服务,设置treadlocal变量为1, 但thread1可能在后来为用户2的请求服务。用户2读取treadlocal变量则为1.   规则: 1,每次请求都重新设置treadlocal变量的值 2. 或者每次使用完treadlocal变量后,都清空掉值。...

qihaihui的专栏 157

JavaEE轻量级框架应用与开发——S2SH答案

JavaEE轻量级框架应用与开发——S2SH此书课后答案,此书由QST青软实训编著,清华大学出版社出版

ThreadLocal 的深入了解应用

为每个线程提供独立的局部变量。提供线程局部变量。这些变量与政策的变量不同,因为每一个线程在访问实例的时候(通过其get或set方法)都。实例通常是类中的私有静态字段,使用它的目的是系统将状态(例如,用户ID或事务ID)与线程关联起来。

weixin_52834606的博客 1252

一文看懂—Agent多智能体协作

多智能体协作已成为AI应对复杂任务的关键范式,通过模拟人类团队分工,实现专业化、高效化和纠错能力。本文系统阐述了多智能体协作的核心概念(智能体分工、工作流编排、工具使用)、与产品规划的关联(任务拆解、错误处理、组织架构设计),以及典型应用场景(报告生成、客服工单、学习规划)。同时剖析了常见陷阱(循环卡死、信息失真、成本失控)及解决方案,并提供了实用工具模板(角色定义卡、工作流画布、成本仪表盘)。最后通过市场竞品分析和旅行规划两个实战案例,展示了多智能体协作的实际价值。该技术正推动AI从单点智能迈向系统智能,

lee006006的博客 1033

从模态到颤振:深入解读Nastran的V-g/V-f图,判断你的机翼设计是否安全

本文深入解析Nastran中的V-g/V-f图在机翼颤振分析中的应用,帮助工程师准确判断设计安全性。通过模态分析到颤振边界的完整判读逻辑,结合气动弹性特性,指导优化机翼结构设计,确保飞行安全。

weixin_28732953的博客 470

拼多多面试官没想到ThreadLocal我用得这么溜,人直接傻掉

面了三次了,总算虐了一次面试官了

敖丙 4万+

UWB定位原理详细介绍

Hello大家好我是小智,今天我来给大家介绍下超宽带的定位原理,首先我们来讲下什么是UWB技术。 超宽带(Ultra Wide Band)简称UWB,和我们熟悉的WIFI、蓝牙技术一样属于通信技术的一种,UWB是一种无线载波通信技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,其所占的频谱范围很宽,右图是一种典型的正弦载波信号图。 UWB这种技术有什么特点呢? UWB系统结构实现简单;2.具有高速的数据传输能力;3.功耗低;4.安全性高;5.多径分辨能力强;6.可用于精确定位等特点。 UWB.

qq_35699674的博客 2万+

JavaEE企业级开发中的分层架构

JavaEE企业级开发中的分层架构 微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层、表示层。分层式设计可以达至目的:分散关注、松散耦合、逻辑复用、标准定义。 JavaEE中分层架构:表现层、业务层、持久层 轻量级开发中采用的是:表现层、业务层、持久层、域对象层 表现层:MVC模式,SpringMVC,收集客户动作和显示业务数据 业务层:Spring框架,封装业务逻辑,逻辑复用 持久层:DAO模式、ORM模式,MyBatis,封装数据访问逻辑 域对象层:实现层和层之间

lyxnb_的博客 1004

【ROS机器人系统】实验4 ROS简单应用:激光SLAM与导航

ROS简单应用:激光SLAM与导航 (1)了解机器人和SLAM之间关系 (2)了解激光SLAM (3)了解gmapping和导航

南京大学软件工程硕士在读 2145

把注释掉的代码删除掉:在 SAP ABAP 团队里打造可回溯、可测试、可演进的代码库

摘要 SAP ABAP项目中常见的"注释掉代码"反模式存在严重隐患:它增加代码噪音,制造虚假安全感,并可能引发安全和合规风险。Clean ABAP指南明确建议删除这类代码,理由包括: 版本控制系统已提供完整历史回溯能力 注释代码会误导开发者,增加理解成本 临时禁用需求应通过Feature Toggle实现 必须保留的参考代码应放入$TMP等隔离区域 团队应建立自动化检查机制,将"删除注释代码"纳入工程规范,确保代码库只表达当前有效的行为逻辑。在AI时代,可以利用工具辅

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2449

基于J2EE规范的TeaFramework框架(毕业设计用于学习J2EE写的一个框架)

基于J2EE的框架技术的实现与应用【摘要】 J2EE的应用越来越广泛,J2EE应用从设计上可以分为三层:表示层、业务层和数据持久层。在这三层上与之对应的J2EE技术为WEB技术和EJB技术,WEB技术实现表现层,而EJB规范负责业务层和数据层。由于J2EE技术的不断发展,在J2EE设计的各个层次现在都有对应的轻量级框架出现,轻量级框架的发展极大了推动了J2EE技术的发展,轻量级框架技术已经成为了下

走自己的路 2767

Hermes接入IMA知识库全攻略:将知识库装进你的Hermes智能体

本文详细介绍了如何将IMA知识库功能接入Hermes Agent平台,实现一站式笔记管理和知识库操作。主要内容包括:获取IMA访问凭证、下载技能包、配置凭据(支持文件和环境变量两种方式)、验证配置有效性,以及实际应用演示(查询知识库列表、创建笔记并添加到知识库)。文章还提供了常见问题解决方案,如认证失败处理、版本更新等。通过该集成,用户可在Hermes中直接调用IMA的笔记创建、知识库管理等强大功能,提升工作效率。

小石头的专栏 640

java线程池threadlocal_java – 这是真的我的工作,以清理ThreadLocal资源,当类暴露在线程池?...

叹息,这是老消息嗯,这个晚会晚了一点。 2007年10月,Josh Bloch(java.lang.ThreadLocal的合着者以及Doug Lea)wrote:“The use of thread pools demands extreme care. Sloppy use of threadpools in combination with sloppy use of thread loca...

weixin_34982065的博客 245

标准论文参考文献添加方法——Zotero入门使用教程

第一篇论文投出去了,写一下最后一步的参考文献修饰润色吧! 论文的参考文献,即References,是论文的最后一步,相信不管是写毕设论文还是期刊论文都遇到过需要修改参考文献的情况,非常之麻烦。而且参考文献中经常会与生僻奇怪气体出现,一个一个修改非常浪费时间,这里介绍一下一个非常好用的软件Zetero。 第一步:软件的下载安装及绑定Word 尽量使用客户端吧,

MISAYAONE的博客 20万+

1、语义数据建模:避免陷阱与突破困境

本文探讨了语义数据建模的兴起背景、核心概念、生命周期及常见挑战。从数据丰富型组织和AI开发者的需求出发,分析了语义建模的关键元素和质量维度,并深入讨论了建模过程中可能出现的陷阱与解决方案。文章还针对语义模型的演化、治理和战略组织问题提供了突破思路,旨在帮助数据从业者更好地理解和应用语义建模技术,以提升数据驱动应用的有效性。

c8d9e0f1的博客 119

基于Java的轻量级异步编程框架

# **DActor** ## Introduction DActor框架可同时支持同步和异步代码,简化在线异步代码的开发,用同步代码的思维来开发异步代码,兼顾...

167

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

java 异步框架_基于Java的轻量级异步编程框架

# **DActor**## IntroductionDActor框架可同时支持同步和异步代码,简化在线异步代码的开发,用同步代码的思维来开发异步代码,兼顾异步代码的高并发、无阻塞和同步代码的易读性,可维护性。基于协程思想设计最大程度的降低阻塞,提高单个线程的处理能力,并可有效的降低线程数。## Overview目前开发过程中的几个常见模型- 同步编程所有步骤都在一个主线程中完成,调用一个方法,...

weixin_35951275的博客 2105

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java 使用框架 处理事务_使用ThreadLocal解决事务问题

SpringMVCSpring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。SpringSpring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-O...

weixin_31815843的博客 160

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

线程安全ThreadLocal和synchronized

线程安全问题的由来在传统的Web开发中,我们处理Http请求最常用的方式是通过实现Servlet对象来进行Http请求的响应。Servlet是J2EE的重要标准之一,规定了Java如何响应Http请求的规范。通过HttpServletRequest和HttpServletResponse对象,我们能够轻松地与Web容器交互。当Web容器收到一个Http请求时,Web容器中的一...

weixin_33781606的博客 143

尚硅谷--JavaWeb篇

​ JavaEE:指的是一种规范,包含了目前tomcat,servlet等等,也包含了jdk(javaSE就包含了jdk里面的各种包)​ Javaweb 是指java语言编写的可通过浏览器访问的程序总称​ tomcat是轻量级的Javaweb容器支持对jsp,servlet这种动态资源的加载,是市面上流行的Javaweb服务器。​ Servlet是JavaEE规范之一,规范也是接口,也是Javaweb三大组件之一。​ JavaWeb三大组件:servlet,filter过滤器,listener监听器,是服务

Empirefree的博客 1923

HibernateUtil工具类

ssh整合开发时,为了简化开发,方便和安全的获取session实例,可以使用单独的工具类来完成session的获取。 代码如下:(代码摘自轻量级javaee开发书籍中) import org.hibernate.*; import org.hibernate.cfg.*; public class HibernateUtil { public static final SessionFa

u010921701的博客 609

一次愉快的“DAO模式之旅”(一)

     一 .有关DAO模式的介绍          业务对象只应该关注业务逻辑,不应该关心数据存取的细节。数据访问对象必须实现特定的持久化策略(如,基于JDBC或Hibernate的持久化逻辑),这样就抽出来了DAO层,作为数据源层,而之上的Domain Model层与之通讯而已,如果将那些实现了数据访问操作的所有细节都放入高层Domain model(领域模型)的话,系统的结构一定层次上

.NET博文收藏 454

挑战ARTS第二周

Algorithm        Add Two Numbers Review Configuring Spring and JTA without full Java EE         这篇文章主要介绍了Spring框架在非Java EE环境下对JTA支持的配置。         Spring框架中对事务的丰富支持,可以与所有类型的JTA无缝协作。对于Java EE服务器(webl...

穿过午夜 377
上一篇: jpa merge 一个属性为null的model
下一篇: 利用Filter技术设置POST请求的编码
日辰言成
博客等级 码龄19年 52粉丝 201原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值