课程名称:ThreadLocal
课程章节:
第3章 【极客视角】大神们怎么用ThreadLocal的
第4章 【设计者视角】源码级实现&源码分析
主讲老师:求老仙
课程内容:
SimpleSemaphore 信号量源码、mybatis框架、Spring框架分布式事务支持源码分析;
简单实现ThreadLocal练习。
课程收获:
1、SimpleSemaphore
Quartz的SimpleSemaphore提供资源隔离;
SimpleSemaphore中的lockOwners(ThreadLocal)为重度锁操作前置过滤。
2、mybatis sqlsession使用threadlocal保证事务
本地事务:
A原子性,就是ab两个操作,要么都做,要么都不做。
C一致性,a扣掉的钱和b加上的钱要一致。
I隔离性,多事务并发的顺序,对结果并不影响。
D持久性,对于a扣掉了钱,突然宕机了,b要能保持好一致性。
3、哈希表实现ThreadLocal
哈希表(散列HashTable)根据键(key)访问、设置内存中的位置的值。
解决冲突(方案1):将冲突的部分用链表存储,需要同时将键和值都存入链表。
解决冲突(方案2):如果在位置A发生冲突,那么在它的附近找一个空槽放下(主要需要有规律,不然以后找不到)
(1)可以引入链表解决哈希冲突,如果槽很大,则Map占用的内存就越大,因此槽不是越大越好
(2)、能将数据散列的更分散的哈希函数更好
(3)、数据散列集中的危害是查询数据时的时间复杂度比较高
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦