课程名称:ThreadLocal
课程章节:
第1章 纵观课程纲要
第2章 是什么?怎么用?何时用?如何不出问题?
主讲老师:求老仙
课程内容:
ThreadLocal解决的是什么问题(数据一致性的问题)
ThreadLocal在Java线程高并发中的应用
课程收获:
1、 程序的安全性
一致性问题
发生在多个主体对同一份数据无法达成共识。
包括:分布式一致性问题,并发问题
特点:场景多,问题复杂,难以觉察,需要严密的思考,甚至数据论证
排队:性能开销较高
投票:高效 两者都有额外的开销
规则:同一份数据尽量一个源头
2、 ThreadLocal
提供线程局部变量,一个线程局部变量在多个线程中,分别有独立的值(副本),相当于给每个线程分配了独立的空间。
特点:简单(开箱即用)、快速(无额外开销)、安全(线程安全)
场景:多线程场景(资源持有,线程一致性,并发计算,线程安全等)
实现原理:Java中用哈希实现
应用范围:几乎所有提供多线特征的语言
进程是操作系统资源分配的最小单位;
线程是操作系统最小的计算单位。
构造函数:ThreadLocal<T>()
初始化:initialValue()
访问:get/set
回收:remove
在程序中,每一个线程都是一个session,是客户端与服务端进行交互的一个过程;在这种情景中,只要程序执行的线程相同的情况下,所操作的用户就是相同的。
把用户数据在执行程序1时就创建一个 ThreadLocal的本地变量,放入到 ThreadLocalMap 的 x 变量中,在执行 程序2、程序3 时就可以拿到当前线程分配到的用户,而不会影响到其他线程的资源变量。
共同学习,写下你的评论
评论加载中...
作者其他优质文章