事物与业务(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
有关ThreadLocal
最新推荐文章于 2025-08-06 16:23:50 发布