From 8dfced4da1b336bbd65b1b51043b25d8c3239d20 Mon Sep 17 00:00:00 2001 From: godotg Date: Sat, 25 Mar 2023 16:18:42 +0800 Subject: [PATCH] feat[map]: fast concurrent segment lock --- .../concurrent/ConcurrentHashMapLongObject.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/protocol/src/main/java/com/zfoo/protocol/collection/concurrent/ConcurrentHashMapLongObject.java b/protocol/src/main/java/com/zfoo/protocol/collection/concurrent/ConcurrentHashMapLongObject.java index f194eacf..0d4d0fd3 100644 --- a/protocol/src/main/java/com/zfoo/protocol/collection/concurrent/ConcurrentHashMapLongObject.java +++ b/protocol/src/main/java/com/zfoo/protocol/collection/concurrent/ConcurrentHashMapLongObject.java @@ -13,11 +13,12 @@ package com.zfoo.protocol.collection.concurrent; import io.netty.util.collection.LongObjectHashMap; +import io.netty.util.collection.LongObjectMap; import java.util.*; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.function.BiConsumer; +import java.util.function.Consumer; /** @@ -169,15 +170,14 @@ public class ConcurrentHashMapLongObject implements Map { } } - @Override - public void forEach(BiConsumer action) { + public void forEachPrimitive(Consumer> consumer) { for (var i = 0; i < buckets; i++) { var readLock = locks[i].readLock(); var map = maps.get(i); readLock.lock(); try { for (var entry : map.entries()) { - action.accept(entry.key(), entry.value()); + consumer.accept(entry); } } finally { readLock.unlock();