diff --git a/src/main/java/net/openhft/chronicle/hash/serialization/internal/DataValueBytesMarshallers.java b/src/main/java/net/openhft/chronicle/hash/serialization/internal/DataValueBytesMarshallers.java index 9112515e3..3bd6ba069 100644 --- a/src/main/java/net/openhft/chronicle/hash/serialization/internal/DataValueBytesMarshallers.java +++ b/src/main/java/net/openhft/chronicle/hash/serialization/internal/DataValueBytesMarshallers.java @@ -70,14 +70,8 @@ public final class DataValueBytesMarshallers { public static Class acquireReaderClass(Class tClass) { - Class readerClass = readersClassMap.get(tClass); - if (readerClass != null) - return readerClass; - synchronized (readersClassMap) { - if ((readerClass = readersClassMap.get(tClass)) != null) - return readerClass; - return compileReaderClass(tClass); - } + return readersClassMap.computeIfAbsent(tClass, + DataValueBytesMarshallers::compileReaderClass); } private static Class compileReaderClass(Class tClass) { @@ -103,20 +97,13 @@ public final class DataValueBytesMarshallers { throw new AssertionError(e); } } - readersClassMap.put(tClass, readerClass); acquireReaderWithCustomFactory(tClass); return readerClass; } public static Class acquireWriterClass(Class tClass) { - Class writerClass = writerClassMap.get(tClass); - if (writerClass != null) - return writerClass; - synchronized (writerClassMap) { - if ((writerClass = writerClassMap.get(tClass)) != null) - return writerClass; - return compileWriterClass(tClass); - } + return writerClassMap.computeIfAbsent(tClass, + DataValueBytesMarshallers::compileWriterClass); } private static Class compileWriterClass(Class tClass) { @@ -141,19 +128,12 @@ public final class DataValueBytesMarshallers { throw new AssertionError(e); } } - writerClassMap.put(tClass, writerClass); return writerClass; } public static Class acquireReaderWithCustomFactory(Class tClass) { - Class c = readersWithCustomFactoriesClassMap.get(tClass); - if (c != null) - return c; - synchronized (readersWithCustomFactoriesClassMap) { - if ((c = readersWithCustomFactoriesClassMap.get(tClass)) != null) - return c; - return compileReaderWithCustomFactory(tClass); - } + return readersWithCustomFactoriesClassMap.computeIfAbsent(tClass, + DataValueBytesMarshallers::compileReaderWithCustomFactory); } private static Class compileReaderWithCustomFactory(Class tClass) { @@ -174,7 +154,6 @@ public final class DataValueBytesMarshallers { throw new AssertionError(e); } } - readersWithCustomFactoriesClassMap.put(tClass, c); return c; }