Java


  • 简介
  • 目录大纲
  • 最新文档

    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



    寒烟濡雨