title: Understanding of getKey in ConcurrentHashMap
body: <p>I am converting an hashmap to ConcurrentHashMap and invoking 16 threads, please see pseudocode as below.
  When each thread is processing based on data from db, they look for a condition like <code>myid</code> which is a key in ConcurrentHashMap is same <code>id</code> data fetched from db. If yes, then I need to perform some business logic. Nowhere in mid of process do I change contents of ConcurrentHashMap.
  But, one observation here is that after all threads have completed processing and program ends, few thousand records are ignored.
  Please let me know if I am missing anything with respect to understanding of ConcurrentHashMap?</p>
  <pre><code>public class Producer   {
      // convert an hashmap to ConcurrentHashMap and pass this as an argument for QueueConsumerWorker constructor
      ConcurrentMap&lt;Long, Pair&lt;String, String&gt;&gt; concurrentMap = new ConcurrentHashMap&lt;&gt;(finalMap);
      
      // Invoke 16 threads of QueueConsumerWorker 
  }
  
  
  
  public class QueueConsumerWorker implements Callable&lt;Void&gt; {
      @Override
      public Void call() throws Exception {
          ...
          // Get data from db and loop through resultset
          while (rs.next()) {
              ..
              if (concurrentMap.containsKey(myid)) {
                  // Perform my business logic i.e. for concurrenthashmap I only perform getKey but do not perform any 
                  // updates.
              }
              ...
          }
      }
  }
  </code></pre>