ThreadLocal的相关介绍

ThreadLocal<T>

简介

  ThreadLocal使用场合主要解决多线程中数据因并发产生不一致问题。ThreadLocal为每个线程的中并发访问的数据提供一个副本,通过访问副本来运行业务,这样的结果是耗费了内存,但大大减少了线程同步所带来性能消耗,也减少了线程并发控制的复杂度。这就好比在web工程中一个用户在查询数据时,传入的查询条件被其他用户的查询条件覆盖,以至于查询的结果非自己的结果。

原理

  在ThreadLocal类中有一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本。每个线程就可以对自己创建的副本变量进行操作,副本变量是一个只对本线程可见的局部变量。每次可以通过get()函数来获取线程中的局部变量,用set()函数设置线程中的局部变量。

连接数据库中的介绍

  因为当一个业务逻辑要对多个DAO进行处理的时候,此操作属于同一个线程内。所以,我们希望能把此Connection放在线程内,或者和线程有关联。在任何一个线程内都可以用ThreadLocal来保存一个变量的copy,这样,如果此对象存在,就可以直接取用。如果ThreadLocal中放置connection, 保证事务中的DAO类获取的都是同一个connection,这样才保证事务。所以,在同一个线程内,不同的DAO就可以保证取得到的是同一个Connection。

时间: 2024-11-05 17:20:51

ThreadLocal的相关介绍的相关文章

风信子RainHyacinth框架相关介绍

项目框架还在开发中,相关介绍文档会相继更新 一:项目开源地址:http://git.oschina.net/xrainchen/RainHyacinth

Android基础入门教程——10.10 传感器专题(1)——相关介绍

Android基础入门教程--10.10 传感器专题(1)--相关介绍 标签(空格分隔): Android基础入门教程 1.传感器相关介绍: 说到传感器,相信大家都不会陌生吧,比如微信的摇一摇就用到了加速度传感器: 传感器的定义:一种物理设备或者生物器官,能够探测.感受外界的信号,物理条件(如光,热, 适度)或化学组成(如烟雾),并将探知的信息传递给其他的设备或者器官! 传感器的种类:可以从不同的角度对传感器进行划分,转换原理(传感器工作的基本物理或化学 效应):用途:输出信号以及制作材料和工艺

oracle的环境配置-oracle的相关介绍

Oracle的相关介绍: 1.Oracle数据库软件--安装OS上的2.软件的获取路径,商务销售策略.3.数据库版本:9i--10%                      10g--65%                      11g--25%--新建的系统常见               12c--最新版本 8i--Internet   9i   10g--gird compute--10gR2-oracle 10g relaease 10.2.0.x   11g           

微信小程序尺寸单位rpx以及样式相关介绍

rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应.规定屏幕宽为750rpx.如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0 微信小程序尺寸单位 rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应.规定屏幕宽为750rpx.如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx =

CSS3 background-image背景图片相关介绍

这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: background-image :设置元素的背景图片. background-repeat :设置如何平铺背景图片. background-attachment :设置背景图片是否固定或随着滚动移动. background-position :设置背景图片的位置. background-size

MySQL 的相关介绍

MySQL 的相关介绍 : 在介绍MySQL之前先弄清楚两个概念: 数据库:与DB相关的物理操作系统文件和其他形式文件的集合 实例:包括与MySQL相关的后台线程和共享内存区 在一般情况下一个实例仅仅对应于一个数据库的,像类似于高可用性集群的那种架构 就是一个数据库对应于多个实例 MySQL 的体系结构: 连接池组件 管理服务和工具组件 sql接口组件 查询分析组件 优化器组件 缓冲组件 插件式存储引擎 物理文件 下图很好的表现了这种体系结构: 常用的MySQL存储引擎 MYISAM特点:不支持

SpringMVC相关介绍

基于注解的SpringMVC的相关介绍 SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是DispatcherServlet,DispatcherServlet负责转发每一个Request请求给相应的Handler,Handler处理以后再返回相应的视图(View)和模型(Model),返回的视图和模型都可以不指定,即可以只返回Model或只返回View或都不返回.在使用注解的SpringMVC中,处理器Handler是基于@Controller

ppDelegate的相关介绍

//  AppDelegate的相关介绍//  IOS笔记 //@interface AppDelegate : UIResponder <UIApplicationDelegate>//@property (strong, nonatomic) UIWindow *window; AppDelegate可处理的事件包括: 1> 应用程序的生命周期事件(如程序的启动和关闭); 2> 系统事件(如来电); 3> 内存警告... AppDelegate为整个应用的一个代理,提供程

Android HttpClient HttpURLConnection相关介绍

Android HttpClient HttpURLConnection相关介绍 遇到一个问题 在android studio上用HttpClient编写网络访问代码的时候,发现该类无法导入并使用....百度了一会儿之后 发现一个强大网友已经解决了.相关博客:http://stackoverflow.com/questions/32153318/httpclient-wont-import-in-android-studio 究其原因:在Android 2.3及以上版本,使用的是HttpURLC