【spring】事务管理之threadlocal

23 篇文章 0 订阅

 在讲编程式事务之前,我们先来说一下threadlocal。

由于spring为各种支持的持久化技术都提供了简单化操作的模板和回调,这些模板类都是线程安全的。也就是说,多个DAO可以复用同一个模板实例而不会发生冲突。使用模板类访问底层数据的时候,根据底层中的持久化技术不同,模板类需要绑定不同的数据连接或者会话的资源。这些资源都是非线程安全的,也就是说他们不能再同一个时刻被多个线程共享。

针对这个问题,假如一个对象是非线程安全的,在多线程的环境下,对对象的访问必须采用synchronized进行线程同步。但是线程同步会降低线程的性能,而且模板类并未采用线程同步机制。所以,spring针对这点,采用的是springlocal。

ThreadLocal管理request的作用域bean、事务管理、任务调度、AOP等模块中都有他的影子。


ThreadLocal是一个保存线程到本地化对象的容器,当运行多线程环境的一个对象的时候使用threadLocal维护变量,ThreadLocal为每一个使用该变量的线程分配一个独立的变量副本,所以每一个线程都可以独立的改变自己的副本,而不会影响其他线程所对应的副本。所以每一个线程都可以独立的改变自己的副本,而不会影响其他线程所对应的副本。从线程的角度来看,这个变量就像线程专有的本地变量。


Thread是以时间换空间的方式,而ThreadLocal是以空间换时间的方式,




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值