继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

逆流的鱼_飞
关注TA
已关注
手记 24
粉丝 1
获赞 0


课程名称:ThreadLocal

课程章节:

第1章 纵观课程纲要

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

主讲老师:求老仙

课程内容:

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

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

课程收获:

1、 程序的安全性

一致性问题

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

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

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

 

排队:性能开销较高

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

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

 

2、 ThreadLocal

http://img2.mukewang.com/631ea9a2000172d313660768.jpg

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

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

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

http://img3.mukewang.com/631ea9860001494913440727.jpg

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

http://img1.mukewang.com/631ea9c40001421813360732.jpg

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

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

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

 

构造函数:ThreadLocal<T>()

初始化:initialValue()

访问:get/set

回收:remove

 

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

http://img1.mukewang.com/631ea9ef0001bff813400729.jpg


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


        




        


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP