高效实现Map的原子更新操作(Hystrix的InternMap<K, V>源码解析)

本文探讨Hystrix框架中InternMap的实现,通过分析源码,展示了如何利用ConcurrentHashMap的putIfAbsent方法实现线程安全且高效的Map原子更新操作。这种设计避免了传统同步手段,提升了性能。
摘要由CSDN通过智能技术生成

最近在学习Hystrix框架时,看到有一段代码,挺有意思的,代码如下:

代码清单1-1

public class InternMap<K, V> {
    private final ConcurrentMap<K, V> storage = new ConcurrentHashMap<K, V>();
    private final ValueConstructor<K, V> valueConstructor;

    public interface ValueConstructor<K, V> {
        V create(K key);
    }

    public V interned(K key) {
        V existingKey = storage.get(key);
        V newKey = null;
        if (existingKey == null) {
            newKey = valueConstructor.create(key);
            existingKey = storage.putIfAbsent(key, newKey);
        }
        return existingKey != null ? existingKey : newKey;
    }
}

省略了部分非关注代码……

ValueConstructor是函数式接口,作用是传入key获得value值,JDK8引入的新特性。


重点关

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值