title: Concurrent Map with one key and multiple values
body: <p>I need to have a Map which is thread safe and can have multiple values. I did write one using <code>MultiMap</code> as </p>
  
  <pre><code>    private MultiMap&lt;String, String&gt; uploadIdETagMap = new MultiValueMap&lt;String, String&gt;();
  
  //Function to get tag value and add to map to that uploadId key
      public void uploadPartForMultiPartUpload() {
          try {
              UploadPartRequest partRequest = new UploadPartRequest();
              partRequest = partRequest.withBucketName(bucketName).withInputStream(inputStream).withKey(fileName)
                      .withPartNumber(partNumber).withUploadId(uploadId).withPartSize(sizeOfData)
                      .withLastPart(isLastPart);
              UploadPartResult result = s3Client.uploadPart(partRequest);
              uploadIdETagMap.put(uploadId, result.getPartETag());
          } catch (Exception e) {
              log.error("Error uploading part: {} in multi part upload.", partNumber, e);
          }
      }
  
      List&lt;String&gt; tagList = (List&lt;String&gt;) uploadIdETagMap.get(uploadId);
  </code></pre>
  
  <p>So everytime i will get new tag value for a particular uplaodId key and i need all of those tags at the end and there will be other uploads processing same time.</p>
  
  <p>In the above code, <code>tag</code> gets added every time as the value of the <code>MultiMap</code> for specific <code>uploadId</code> key.
  The above code works, but both <code>MultiMap</code> and <code>MultiValueMap</code> is deprecated and not thread safe.</p>
  
  <p>So any suggestion how can i achieve this with latest version and thread safety.</p>