[ https://issues.apache.org/jira/browse/GROOVY-8410?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16348110#comment-16348110 ]
Daniel Sun commented on GROOVY-8410: ------------------------------------ The main target of ConcurrentCommonCache is to achieve *atomic* operation(e.g. check-and-put), which is backed by readlock and writelock. ConcurrentHashMap is powerful but it does not provide atomic check-and-put util Java8(providing `computeIfAbsent`). > Provide a common cache > ---------------------- > > Key: GROOVY-8410 > URL: https://issues.apache.org/jira/browse/GROOVY-8410 > Project: Groovy > Issue Type: Improvement > Affects Versions: 3.0.0-alpha-1, 2.5.0-beta-2, 2.4.13, 2.6.0-alpha-2 > Reporter: Daniel Sun > Assignee: Daniel Sun > Priority: Major > Fix For: 2.5.0-beta-3, 2.6.0-alpha-3, 3.0.0-alpha-2 > > > There are many cache implementation in Groovy, many of them are > duplicated(e.g. cache algorithm, the code of implementation...). That is to > say, Groovy is lack of a common cache. > The common cache should: > 1) has two version: thread-safe and not thread-safe for different senario > 2) achieve basic cache function(manage keys and values, LRU, etc.) > 3) can specify the map that the cache is based on(Maybe we need WeakHashMap > or other Map instance sometimes) > Here is the implementation of the common cache: > https://github.com/apache/groovy/blob/master/src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java > https://github.com/apache/groovy/blob/master/src/main/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java -- This message was sent by Atlassian JIRA (v7.6.3#76005)