java.lang.ThreadLocal的作用和原理?列举在哪些程序中见过ThreadLocal的使用?

说明类java.lang.ThreadLocal的作用和原理。列举在哪些程序中见过ThreadLocal的使用?

类java.lang.ThreadLocal的作用

要编写一个多线程安全(Thread-safe)的程序是困难的,为了让线程共享资源,必须小心地对共享资源进行同步,同步带来一定的效能延迟,而另一方面,在处理同步的时候,又要注意对象的锁定与释放,避免产生死结,种种因素都使得编写多线程程序变得困难。

尝试从另一个角度来思考多线程共享资源的问题,既然共享资源这么困难,那么就干脆不要共享,何不为每个线程创造一个资源的复本。将每一个线程存取数据的行为加以隔离,实现的方法就是给予每个线程一个特定空间来保管该线程所独享的资源。

比如:在Hibernate中的Session就有使用。

ThreadLocal的原理

ThreadLocal是如何做到为每一个线程维护变量的副本的呢?其实实现的思路很简单,在ThreadLocal类中有一个Map,用于存储每一个线程的变量的副本。

最新文章

  1. 亚马逊云服务器VPS Amazon EC2 免费VPS主机配置CentOS及其它内容
  2. php by oneself
  3. 外观模式(Facade Pattern)
  4. js实现windows扫雷(jquery)
  5. .NET开源工作流RoadFlow-流程设计-流转条件设置(路由)
  6. Android网络编程http派/申请服务
  7. poj 1698 Alice's Chance 拆点最大流
  8. linux下shell命令trap
  9. [转载]github在线更改mysql表结构工具gh-ost
  10. Struts(二十六):文件上传
  11. Python——入门 | 常用python实现
  12. 4、new一个对象的时候,初始化顺序:
  13. python DB-API
  14. MySql数据库学习笔记(3)
  15. RESTful API 设计指南,RESTful API 设计最佳实践
  16. 【Python】进程3
  17. 程序员的数学 三册数学,概率统计、线性代数pdf
  18. 高盛昂赛 算法题先写corner case
  19. AWT事件模型
  20. POJ 1436 Horizontally Visible Segments (线段树·区间染色)

热门文章

  1. BUUCTF MISC部分题目wp
  2. 快速上手的Glide4.x教程
  3. 2019计蒜之道初赛第3场-阿里巴巴协助征战SARS 费马小定理降幂
  4. ida x32 dbg 动态调试
  5. 让APK只包含指定的ABI(转)
  6. 批量修改root密码
  7. Qt 【tableview+delegate list越界 ,删除了list,model上还有存在delegate】
  8. PHP 的 new static 和 new self
  9. php 中 instanceof 操作符
  10. Python常用三方库安装