解读TheadLocal

一致性问题:

1、多个主体无法对同一份数据达成共识;

2、包括分布式一致性问题和并发问题;

3、特点是场景多问题复杂难以察觉,需要严密的思考甚至数学论证。

一致性问题的解决办法:

1、排对(例如:锁,互斥量,管程,屏障);

2、投票(例如:Paxos,Raft)

以上两个都有额外开销,避免的方式可以选择ThreadLocal。

ThreadLocal是什么?

提供线程局部变量,一个线程的局部变量在多个线程中有独立的副本,特点有:简单(开箱即用),快速(无额外开销),安全(线程安全);场景:多线程场景(资源持有,并发计算,线程一致性,线程安全)使用hash表实现,几乎所有提供多线程特征的语言都是其应用范围。

ThreadLocal基本的API:带有泛型的构造函数,访问器get/set,初始化,回收

ThreadLocal四种核心场景:

1、线程资源持有(ThreadLocalMap实现,持有线程资源供线程的各个部分使用,全局获取减少变成难度)

2、线程资源一致性(帮助需要保持线程一致的资源,维护一致性,降低编程难度,例如:JDBC会话连接)

3、线程安全(帮助只考虑了单线程的程序库,无缝想多线程场景迁移)

4、分布式计算(帮助分布式计算场景的各个线程累计局部计算结果)

待继续编辑...

原文地址:https://www.cnblogs.com/niuyg928/p/13598478.html