为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第8天 ThreadLocal学习

标签:
Java


课程名称:ThreadLocal

课程章节:

第1章 纵观课程纲要

第2章 是什么?怎么用?何时用?如何不出问题?

主讲老师:求老仙

课程内容:

    ThreadLocal解决的是什么问题(数据一致性的问题)

    ThreadLocal在Java线程高并发中的应用

课程收获:

1、 程序的安全性

一致性问题

发生在多个主体对同一份数据无法达成共识。

包括:分布式一致性问题,并发问题

特点:场景多,问题复杂,难以觉察,需要严密的思考,甚至数据论证

 

排队:性能开销较高

投票:高效              两者都有额外的开销

规则:同一份数据尽量一个源头

 

2、 ThreadLocal

https://img1.sycdn.imooc.com//631ea9a2000172d313660768.jpg

提供线程局部变量,一个线程局部变量在多个线程中,分别有独立的值(副本),相当于给每个线程分配了独立的空间。

特点:简单(开箱即用)、快速(无额外开销)、安全(线程安全)

场景:多线程场景(资源持有,线程一致性,并发计算,线程安全等)

https://img1.sycdn.imooc.com//631ea9860001494913440727.jpg

实现原理:Java中用哈希实现

https://img1.sycdn.imooc.com//631ea9c40001421813360732.jpg

应用范围:几乎所有提供多线特征的语言

进程是操作系统资源分配的最小单位;

线程是操作系统最小的计算单位。

 

构造函数:ThreadLocal<T>()

初始化:initialValue()

访问:get/set

回收:remove

 

  在程序中,每一个线程都是一个session,是客户端与服务端进行交互的一个过程;在这种情景中,只要程序执行的线程相同的情况下,所操作的用户就是相同的。

https://img1.sycdn.imooc.com//631ea9ef0001bff813400729.jpg


把用户数据在执行程序1时就创建一个 ThreadLocal的本地变量,放入到 ThreadLocalMap 的 x 变量中,在执行 程序2、程序3 时就可以拿到当前线程分配到的用户,而不会影响到其他线程的资源变量。


        




        


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消