首页 > 其他分享 >ThreadLocal 的原理讲述 + 基于ThreadLocal实现MVC中的M层的事务控制

ThreadLocal 的原理讲述 + 基于ThreadLocal实现MVC中的M层的事务控制

时间:2023-05-17 19:46:23浏览次数:39  
标签:讲述 Thread ThreadLocal value Connection MVC 线程 public

ThreadLocal 的原理讲述 + 基于ThreadLocal实现MVC中的M层的事务控制

在这里插入图片描述

目录

每博一文案

生活不是努力了就可以变好的,喜欢做的事情也不是轻易就可以做的。以前总听别人说,
坚持就好了,努力就好了,都会好的,可是真的做起来压根就不是这样。这种时候要怎么办?
这种时候还能轻易地相信时间吗?
我总是一时间不知道怎么回答:直到今天我决定记录这些日子的生活时,直到我写完以上的文字时,我
脑海里才出现了一个清晰的答案。四个字:尽力而为。
我想这样的。世事无常,分道扬镳,生老病死,我们常常没法得偿所愿。
然而我们都必须尽力而为。
我觉得挺好的:把眼前的事情做好就行了,路都是走着走着才知道能走到哪里的。
越是焦虑,就越是要回到生活里去。因为身处迷雾中本就很难找到方向,能看见的也就
眼前的五米,那就五米五米地一步步走下去。
至于路能走成什么样,又能走去哪里......
走着走着,就都知道了。
但或许其实终点到底是哪里也不是那么重要。
重要的是,我们走了很远的路,最终找到的人,是我们自己。
是哪个可以很好地应对挫折,应对痛苦,应对生活的变故的自己。
是那个依然前行,依然努力,依然能够为了小事而欣喜,为了善良而感动的自己。
是那个终于学会了珍惜的自己,是那个不再害怕平方的自己。
生活如河,自己就是自己的船。

                            ——————卢思浩《你也走了,很远的路吧》

1. ThreadLocal 给概述

ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程 ,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。

ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意:

  • 因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用。这是也是 ThreadLocal 命名的由来。
  • 既然每个 Thread 有自己的实例副本,且其它 Thread 不可访问,那就不存在多线程间共享的问题

ThreadLocal 提供了线程本地的实例。它与普通变量的区别在于,每个使用该变量的线程都会初始化一个完全独立的实例副本。ThreadLocal 变量通常被private static修饰。当一个线程结束时,它所使用的所有 ThreadLocal 相对的实例副本都可被回收。

  • 这种变量在多线程环境下访问(通过get和set方法访问)时能保证各个线程的变量相对独立于其他线程内的变量
  • 在线程的生命周期内起作用,可以减少同一个线程内多个函数或组件之间一些公共变量传递的复杂度

总的来说,ThreadLocal 适用于每个线程需要自己独立的实例且该实例需要在多个方法中被使用,也即变量在线程间隔离而在方法或类间共享的场景

下图可以增强理解:

在这里插入图片描述

2. 抛砖引玉——>ThreadLocal

从上述一篇文章中:我们运用 MVC的架构模式——> 实现了用户转账的功能:

标签:讲述,Thread,ThreadLocal,value,Connection,MVC,线程,public
From: https://www.cnblogs.com/TheMagicalRainbowSea/p/17409912.html

相关文章

  • MVC 三层架构案例详细讲解
    MVC三层架构案例详细讲解@目录MVC三层架构案例详细讲解每博一文案1.MVC概述2.MVC设计思想3.三层架构4.MVC与三层架构的关系:5.案例举例:用户账户转账5.1M(Model:数据/业务处理层)5.2C(Controller:控制层)5.3V(View:视图/展示)6.总结:7.最后:每博一文案多读书,书......
  • Spring+SpringMVC19_Spring练习-业务实现2
    六、用户表和角色表的分析  七、角色列表展示分析  八、角色列表展示-controller层实现  九、角色列表展示-service和dao层实现  十、角色列表展示-配置实现  十一、角色列表展示-页面展示  十二、角色的添加操作  十三、用户列表展示1 ......
  • 初识Springmvc
    1.什么是springmvc1).轻量级的框架2).基于spring的IOC和AOP进行封装3).基于Servlet进行封装4).实现了mvc设计思想的框架2.springmvc的执行流程图1).浏览器发送http请求2).前端控制器DispatcherServlet负责接收所有的请求3).前端控制器调度处理器映射器HandlerMapping处理请......
  • 全注解springMVC实例20230517
     1、pom<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.3.13.RELEASE</version></dependency><dependency&g......
  • 又踩坑了!SpringMVC+ant+tomcat实现自动化打包,原来这么多坑
    背景是项目使用的是tomcat进行打包,没有使用Maven,需要构建一个ant执行的文件,用于后期可以在实际中使用,运行的平台是Windows。在使用中遇到了不少的坑点,一一记录下来,方便后期或者和我遇到相同问题的朋友们查看和借鉴。错误:打包报错[2023-05-16 10:35:23,164] Artifact meta......
  • springmvc学习。开发一个小网站
    一、准备在Intelij里面选择maven项目,然后选择webapp,否则无法整整build。一共两个配置文件web.xml和springmvc.xml目录一共有3个。在main下有javaresources(springmvc.xml文件在当下)webapp.(放js。img。jsp等) 二、POM添加依赖版本5.2.10spring-contextspri......
  • springmvc上传文件——疯狂踩坑
    添加依赖: 配置:注意这里bean的id必须为 multipartResolver 实现:这里需要注意圈起来的地方的名字和文件上传时候的字段名称需要保持一致  测试:这里键名必须为upload和上面那张图中的upload对应publicResultuploadResFile(@RequestParamMultipartFileupload,Ht......
  • SpringMVC快速复习(超详细)
    目录一、SpringMVC简介1、什么是MVC2、什么是SpringMVC3、SpringMVC的特点二、HelloWorld1、开发环境2、创建maven工程a>添加web模块b>打包方式:warc>引入依赖3、配置web.xmla>默认配置方式b>扩展配置方式4、创建请求控制器5、创建springMVC的配置文件6、测试HelloWorlda>实现对首......
  • threadlocal使用场景
    1 在拦截器中将用户信息放到threadlocal中,后续业务方法直接从threadlocal中获取,这样做可以简化用户信息在方法间来回传递2 将类的成员变量放到threadlocal中,这个类在单例模式下也不会有线程安全问题.注意:使用完threadlocal后要调用remove()防止内存泄漏......
  • 系统错误:找不到mvcp120d.dll,无法继续执行代码
    0、问题出现小背景:安装mysql,在初始化:mysqld--initialize--console发现直接没有显示密码,也没有报错在cmd窗口下,输入命令行:mysqldinstall,[前提:windows系统已经配置了mysql环境],回车键,就看到提示信息:找不到mvcp120d.dll,无法继续执行代码1、找不到mvcp120d.dll,无法继续执行......