Sunday, 18 August 2013

Is a ConcurrentHashSet required if threads are using different keys?

Is a ConcurrentHashSet required if threads are using different keys?

Suppose I have a hash set of request IDs that I've sent from a client to a
server. The server's response returns the request ID that I sent, which I
can then remove from the hash set. This will be run in a multithreaded
fashion, so multiple threads can be adding to and removing IDs from the
hash set. However, since the IDs generated are unique (from a thread safe
source, let's say an AtomicInteger for now that gets updated for each new
request), does the HashSet need to be a ConcurrentHashSet? I would think
the only case this might cause a problem would be if the HashSet
encounters collisions which may require datastructure changes to the
underlying HashSet object, but it doesn't seem like this would occur in
this use case.

No comments:

Post a Comment