在一般情况下,只有无状态的Bean才可以在多线程环境下共享,在Spring中,绝大部分Bean都可以声明为singleton作用域,因为Spring对一些Bean中非线程安全状态采用ThreadLocal进行处理,解决线程安全问题。

ThreadLocal和线程同步机制都是为了解决多线程中相同变量的访问冲突问题。同步机制采用了“时间换空间”的方式,仅提供一份变量,不同的线程在访问前需要获取锁,没获得锁的线程则需要排队。而ThreadLocal采用了“空间换时间”的方式。

ThreadLocal会为每一个线程提供一个独立的变量副本,从而隔离了多个线程对数据的访问冲突。因为每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了。ThreadLocal提供了线程安全的共享对象,在编写多线程代码时,可以把不安全的变量封装进ThreadLocal。

最新文章

  1. jQuery对象和DOM对象的区别
  2. JS控制的几种页面跳转方式和传值
  3. visual studio错误解决 [error LNK1104: 无法打开文件“gdi32.lib”]
  4. hdu-5493 Queue(二分+树状数组)
  5. 屠龙之路_狭路相逢勇者胜_EighthDay
  6. 垂直时间轴HTML
  7. ASP.NET MVC SignalR
  8. 利用Fragment创建动态UI 之 Fragment之间的通信
  9. CocoaPods安装、卸载、使用说明(Mac ox 10.11+)
  10. json劫持payload
  11. java基础21 System类和Runtime类
  12. ldap客户端以及jenkins的配置
  13. 开启otl的64位长整数支持
  14. 160225、解决纯js文件国际化的问题
  15. POJ.2251 Dungeon Master (三维BFS)
  16. uva 784 Maze Exploration(简单dfs)
  17. MySQL-5.7密码策略及用户资源限制
  18. random和os模块
  19. PokeCats开发者日志(三)
  20. OpenStack手动制作CentOS 7 KVM镜像

热门文章

  1. python爬虫:爬虫的简单介绍及requests模块的简单使用
  2. python中time模块的调用及使用
  3. Lesson1——Tensor
  4. 对于计算正确率时 logits.argmax(dim=1),torch.eq(pre_label,label)
  5. 今儿直白的用盖房子为例,给你讲讲Java建造者模式
  6. Java基础——选择语句
  7. 60天shell脚本计划-2/12-渐入佳境
  8. 记一次加密的ts视频下载
  9. python浅拷贝与深拷贝浅析
  10. 五、Java控制流程