一致性问题:
1、多个主体无法对同一份数据达成共识;
2、包括分布式一致性问题和并发问题;
3、特点是场景多问题复杂难以察觉,需要严密的思考甚至数学论证。
一致性问题的解决办法:
1、排对(例如:锁,互斥量,管程,屏障);
2、投票(例如:Paxos,Raft)
以上两个都有额外开销,避免的方式可以选择ThreadLocal。
ThreadLocal是什么?
提供线程局部变量,一个线程的局部变量在多个线程中有独立的副本,特点有:简单(开箱即用),快速(无额外开销),安全(线程安全);场景:多线程场景(资源持有,并发计算,线程一致性,线程安全)使用hash表实现,几乎所有提供多线程特征的语言都是其应用范围。
ThreadLocal基本的API:带有泛型的构造函数,访问器get/set,初始化,回收
ThreadLocal四种核心场景:
1、线程资源持有(ThreadLocalMap实现,持有线程资源供线程的各个部分使用,全局获取减少变成难度)
2、线程资源一致性(帮助需要保持线程一致的资源,维护一致性,降低编程难度,例如:JDBC会话连接)
3、线程安全(帮助只考虑了单线程的程序库,无缝想多线程场景迁移)
4、分布式计算(帮助分布式计算场景的各个线程累计局部计算结果)
待继续编辑...