org.openjdk.jmh.util.Deduplicator vs threading issues

Vladimir Sitnikov sitnikov.vladimir at gmail.com
Wed Apr 22 17:25:47 UTC 2015


Please find the patch attached.

Vladimir
-------------- next part --------------
# HG changeset patch
# User Vladimir Sitnikov <sitnikov.vladimir at gmail.com>
# Date 1429723059 -10800
#      Wed Apr 22 20:17:39 2015 +0300
# Node ID 1b3c409d1331bb00a7439b12d1acdeb2ae122bef
# Parent  763c4cf039d82067e5dcc35c75210d831b3c0951
Make Deduplicator thread safe

diff -r 763c4cf039d8 -r 1b3c409d1331 jmh-core/src/main/java/org/openjdk/jmh/util/Deduplicator.java
--- a/jmh-core/src/main/java/org/openjdk/jmh/util/Deduplicator.java	Wed Apr 22 20:13:09 2015 +0300
+++ b/jmh-core/src/main/java/org/openjdk/jmh/util/Deduplicator.java	Wed Apr 22 20:17:39 2015 +0300
@@ -24,23 +24,22 @@
  */
 package org.openjdk.jmh.util;
 
-import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 public class Deduplicator<T> {
 
     final Map<T, T> map;
 
     public Deduplicator() {
-        map = new HashMap<T, T>();
+        map = new ConcurrentHashMap<T, T>();
     }
 
     public T dedup(T t) {
-        T et = map.get(t);
+        T et = map.putIfAbsent(t, t);
         if (et != null) {
             return et;
         } else {
-            map.put(t, t);
             return t;
         }
     }


More information about the jmh-dev mailing list