- 简介
- 目录大纲
- 最新文档
ConcurrentHashMap
分段加锁 // ConcurrentHashMap的put方法直接就是调用的类中的putVal方法,所以我这里就直接贴出来putVal方法了 final V putVal(K key, V value, boolean onlyIfAbsent) { // key和value都不允许为null,否则会报错 if (key == null || value == null) thro……
寒烟濡雨 - 2024年3月8日 11:02
ComputeIfAbsent 在jdk8下的死锁场景
一、ConcurrentHashMap的死锁场景 先看一段代码,这里主要是使用了computeIfAbsent进行更新 Map<String, Integer> map = new ConcurrentHashMap<>(); map.computeIfAbsent( "AaAa", key -……
寒烟濡雨 - 2024年3月8日 11:00
AQS - 从干饭角度解析
AQS 是什么? AQS (AbstractQueuedSynchronizer)抽象队列同步器,是JUC并发包下多种锁的底层实现。如CountDownLatch、Semaphore、ReentrantReadWriteLock。 其底层是CLH(Craig, Landin, and Hagersten)锁的改进版。 核心原理是一样的,把竞争的线程排成先入先出队列,排队的节点只监听pre节点的锁状……
寒烟濡雨 - 2024年2月21日 21:27
redis 中的Lua脚本
Lua入门 https://www.runoob.com/lua/lua-tutorial.html springboot使用 RedisScript<Long> script = new DefaultRedisScript<>("return 1", Long.class); Object[] args = Stream.of(5).map(String::valueO……
寒烟濡雨 - 2022年11月28日 15:05
LinkedHashMap
描述 简单地讲,就是维护了顺序的hashmap,可以选择是插入顺序(默认)还是访问顺序。底层维护了一个双向链表的hash结构。从复杂度而言,成本几乎和treeMap一致。 提供了一个特殊的构造函数来创建一个按访问顺序排序的hashmap,其迭代顺序是其数据项最后一次访问的顺序,即最近最少访问到最近最多访问。这种顺序的Map非常适合构建 LRU 缓存。调用 put、putIfAbsent、get、g……
寒烟濡雨 - 2022年6月11日 16:05