[ 
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)

Reply via email to