事物与业务(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)是Java编程中一个非常重要的工具类,它在多线程环境下提供了线程安全的数据存储。ThreadLocal并不是一个变量,而是一个类,它为每个线程都创建了一个独立的变量副本,使得每个线程都...
另外,它也可以用于HTTP请求上下文,存储请求相关的数据,如用户会话信息,避免在方法之间传递参数。 然而,ThreadLocal并不是万能的解决方案,它有一些潜在的问题需要注意: - 内存泄漏:如果线程长时间存活,或者...
`WebappClassLoader` 的生命周期与 web 应用紧密相关,当 web 应用被卸载时,它应该被垃圾回收。但是,由于 `ThreadLocal` 的设计特性,其内部维护了一个与线程关联的弱引用表。只有当线程结束后,`ThreadLocal` 中...
在一些框架或库中,如Spring,ThreadLocal被用来存储线程相关的配置信息。 4. **局部状态:** 在多线程环境中,当每个线程需要有自己的状态(如计数器),ThreadLocal提供了一种优雅的解决方案。 尽管...
### 正确理解ThreadLocal:深入解析其工作原理与应用场景 #### 一、ThreadLocal的基本概念 `ThreadLocal`是Java平台提供的一种线程局部变量的解决方案,它为每一个使用该变量的线程都提供了独立的变量副本,使得每...
ThreadLocal 整理 ThreadLocal 是 Java 中的一个重要组件,它能够在每个线程中保持独立的副本。这个功能是通过 Thread 类中的 threadLocals 属性来实现的,这个属性实际上是一个 Entry 数组,其中的每个 Entry 都...
Java事务和ThreadLocal是两种在Java编程中至关重要的概念,它们分别用于处理多线程环境下的数据一致性问题和提供线程局部变量。 首先,我们来深入理解Java事务。在数据库操作中,事务是一系列操作的集合,这些操作...
理解ThreadLocal 理解ThreadLocal 理解ThreadLocal 理解ThreadLocal
### Java中ThreadLocal详解 #### 一、ThreadLocal概述 在Java多线程编程中,`ThreadLocal`是一个非常重要的工具类,它提供了一种在每个线程内部存储线程私有实例的方法。通常情况下,当多个线程共享某个变量时,...
ThreadLocal是Java编程中一种非常特殊的变量类型,它主要用于在多线程环境下为每个线程提供独立的变量副本,从而避免了线程间的数据共享和冲突。然而,ThreadLocal在理解和使用过程中容易产生一些误区,这里我们将...
"ThreadLocal相关知识点总结" ThreadLocal是Java中的一种机制,用于在多线程环境中保存线程上下文信息,并且提供了一种解决多线程程序并发问题的思路。下面是对ThreadLocal的主要知识点的总结: 1. ThreadLocal的...
- **线程安全的配置对象**:在多层架构中,如Spring框架中,可以使用ThreadLocal来存储线程相关的配置信息,如数据库连接、事务管理等,确保这些对象不会被其他线程访问。 - **HTTP请求上下文**:在Web应用中,可以...
4. **减少锁的使用**: 当多个线程需要共享同一资源,但每个线程只需要读取自己相关的数据时,`ThreadLocal`可以避免锁的使用,提升效率。 **注意事项** - 使用`ThreadLocal`后,应确保及时清理不再使用的变量,...
在实际开发中,ThreadLocal常用于缓存线程相关的数据,如数据库连接、事务管理、请求上下文等。例如,数据库连接池通常会提供一个ThreadLocal的静态变量,使得每个线程都能快速获取到专属的数据库连接,提高并发性能...
ThreadLocal的生命周期与线程相关。当线程结束时,ThreadLocalMap会随线程一起销毁,线程内的ThreadLocal变量也就不再有效。因此,ThreadLocal不适合用于存储跨线程或者线程池中的共享数据。 **使用ThreadLocal的...
本资料主要聚焦于两种设计模式以及Java中的ThreadLocal特性。 首先,我们来探讨单例模式。单例模式是一种确保一个类只有一个实例,并提供全局访问点的设计模式。在Java中,通常通过私有构造函数、静态工厂方法或...
在Java编程中,ThreadLocal是线程局部变量的类,它提供了一种在多线程环境中为每个线程创建和维护独立副本的机制。ThreadLocal主要用于解决线程间的数据隔离问题,确保各线程拥有自己的变量副本,避免了数据共享带来...