title: ConcurrentHashMap does not work as expected
body: <p>I am counting votes for electronic election and I have only one party in my initial version. There will be different threads per voter and the threads will update the votes count of a given party.</p>
  <p>I decided to use ConcurrentHashMap, but the results are not what I expected...</p>
  <pre><code>Map&lt;String, Integer&gt; voting = new ConcurrentHashMap&lt;&gt;();
  
  for (int i = 0; i &lt; 16; i++) {
    new Thread(() -&gt; {
      voting.put(&quot;GERB&quot;, voting.getOrDefault(&quot;GERB&quot;, 0) + 1);
    }).start();
  }
  
  for (int i = 0; i &lt; 100; i++) {
    voting.put(&quot;GERB&quot;, voting.getOrDefault(&quot;GERB&quot;, 0) + 1);
  }
  
  Thread.sleep(5000); // Waits for the threads to finish
  
  for (String s : voting.keySet()) {
    System.out.println(s + &quot;: &quot; + voting.get(s));
  }
  </code></pre>
  <p>The result is different every time - it ranges from 114 to 116.</p>
  <p>Isn't ConcurrentHashMap supposed to be synchronised?</p>