epam / CoroutinesCache

In mobile development exists solution for caching with RxJava usage, but there is no solutions for Kotlin Coroutines. The project is to provide this functionality to mobile community.
Apache License 2.0
162 stars 7 forks source link

Use ConcurrentHashMap in MemoryCache to avoid superfluous sync #4

Closed ahulyk closed 5 years ago

ahulyk commented 5 years ago

ConcurrentHashMap is the way to go in Memory cache implementation:

There is no locking at the object level, the locking is at a much finer granularity. For a ConcurrentHashMap, the locks may be at a hashmap bucket level.

The effect of lower level locking is that you can have concurrent readers and writers which is not possible for synchronized collections. This leads to much more scalability.

ConcurrentHashMap does not throw a ConcurrentModificationException if one thread tries to modify it while another is iterating over it.