有关ThreadLocal

本文介绍ThreadLocal的作用及其实现原理,包括如何将Connection与线程绑定,确保线程间的资源隔离,以及在业务处理中如何使用ThreadLocal进行资源管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事物与业务(Biz)相关,而连接(和dao)应与业务相分离
业务代码要求纯净,最好不要出现与技术相关的代码
1.为什么要引入ThreadLocal
 引入ThreadLocal 将Connection与线程绑定在一起。
 只要在同一线程当中访问必是同一对象;而其他线程则访问不到该资源(Connection)彼此互不影响。
 而且又不需要与其它线程交互~(该线程独享该资源)私有数据
 ThreadLocal的简单实现原理
 ThreadLocal中存在一Map;[ThreadLocalMap{Thread 的一个属性}](访问修饰符为默认的~)存放线程独享的资源;
 Map的Key为当前线程 value为所要绑定的资源,所以在调用set(T value);get();remove() 方法时不需要Key ThreadLocal会自动寻找当前线程的引用{Thread.currentThread() 方法};
 详细说明ThreadLocal 中的get();  set(T value);方法以及remove();方法的使用~
 set 设置ThreadLocal中的值;(将要使用的资源放入其中)
 get 获得ThreadLocal中的值;
 remove 将以绑定资源移除
 [
  1. 释放资源,释放内存,节省资源
  2. 线程是可以被反复利用的[线程池]不能让后来的用户使用以前用户所使用过的资源(Connection)
   而且线程不安全的是不能在各线程间共享。 
  //2.线程的ID的是long类型的是有长度的~
 ]
 JdbcUtil
 
 
 
      biz:  1) 接收用户数据(参数,零散)
             2) 验证业务数据
             3) 将零散的数据打包对象
             4) 将数据存入数据库(利用对象调用dao层的方法)
             5) 如果查询,接收dao的返回值
             6) 将dao返回的对象拆成零散数据传给view显示
    dao:1) 接收biz传来的对象
             2) 将对象拆成零散数据存入数据库
             3) 如果查询,将rs里的数据封装成对象
                 2+3===== O-R mapping
             4) 将封装好的对象返回给biz
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值