码迷,mamicode.com
首页 > 其他好文 > 详细

ThreadLocal的相关介绍

时间:2016-11-11 14:12:03      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:覆盖   通过   性能   不一致   原理   自己的   操作   set   函数   

ThreadLocal<T>

简介

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

原理

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

连接数据库中的介绍

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

ThreadLocal的相关介绍

标签:覆盖   通过   性能   不一致   原理   自己的   操作   set   函数   

原文地址:http://www.cnblogs.com/youzhongmin/p/6053702.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!