ThreadLocal与ForkJoin使用踩坑记录

2021-04-09
阅读 3 分钟
5.1k
由于项目框架原因,在谨慎考虑后使用了ThreadLocal存储了上下文。上线一段时间后,发现有些时候拿到的上下文并不是自己线程的上下文,最后定位到是因为使用了java8的并行流,并且在并行流里面拿了一次ThreadLocal的上下文值,分析了一波原因后,将并行流改为了串行流(或使用ThreadPoolExecutor),情况得以正常。

@Transactional事务生效问题

2019-03-08
阅读 2 分钟
7.6k
平时我们使用spring框架,不论是springmvcv还是springboot,springCloud,绝大多数情况我们都是在方法,或者直接在类上面加一个@Transactional,将事务交给spring替我们去管理,然后并没有具体分析一些情况,今天结合几个例子,结合源代码,使用伪代码解释一波。

ConcurrentHashMap浅析

2018-12-13
阅读 4 分钟
8.3k
上一篇文章我们详细分析了一遍hashMap的数据结构,但是我们知道,在多线程情况下。hashmap是不安全的,这是问什么呢?我们首先分析一下: 多线程在对HashMap进行put的时候,邹游一个时候,hashCode会超过负载因子(默认0.75),超过以后,HashMap内部就会对数组扩容,扩容的时候会调用resize().下面我们看一下resize()方...

hashMap源码分析以及原理

2018-12-13
阅读 9 分钟
6.2k
前言 hashMap在平时工作和面试中,常常使用到和问到,本文将从一下几个方面进行记录:   什么是哈希表 HashMap实现原理 为何HashMap的数组长度一定是2的次幂? 1. 什么是哈希表 在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能   数组:采用一段连续的存储单元来存储数据。对于指定下...