On Mar 21, 2013, at 3:10 PM, Dan Berindei <[email protected]> wrote:

> 
> 
> On Thu, Mar 21, 2013 at 1:17 PM, Galder Zamarreño <[email protected]> wrote:
> 
> On Mar 20, 2013, at 11:52 AM, Manik Surtani <[email protected]> wrote:
> 
> >
> > On 18 Mar 2013, at 12:21, Galder Zamarreño <[email protected]> wrote:
> >
> >> This is why, I've created a new CHM, based on the CHMv8, called 
> >> ComparingConcurrentHashMapv8 (thx Tristan for the name!). The work for 
> >> this can be seen 
> >> in:https://github.com/galderz/infinispan/commit/351e29d327d163ca8e941edf873f6d46b43cfae1
> >
> > Sounds good, but why not extend 
> > org.infinispan.util.concurrent.jdk8backported.ConcurrentHashMapV8?
> 
> To be honest, I'm considering keeping only one ConcurrentHashMapV8 around, 
> which had the Comparing functions pluggable…, and I might end up doing that. 
> IOW, a ComparingConcurrentHashMapV8 instance created with ComparingObject 
> function for both keys and values is functionality equivalent 
> ConcurrentHashMapV8 with little/hardly impact.
> 
> I originally wanted to keep two versions so that I could more easily port 
> over changes in JSR-166 to 
> org.infinispan.util.concurrent.jdk8backported.ConcurrentHashMapV8, and then 
> pass this on to ComparingCHMv8… but I don't think it's worth it.
> 
> 
> Interesting, the extra166y package had a CustomConcurrentHashMap [1] that did 
> exactly what you want, but Doug Lea didn't port it over to 
> ConcurrentHashMapV8. Guava too has a CustomConcurrentHashMap class, but it's 
> also based on the old ConcurrentHashMap code.
> 
> I think maintaining one ConcurrentHashMapV8 class is hard enough, and I doubt 
> there would be any performance difference between the two versions. So I vote 
> to keep only the Comparing version.
> 
> [1] 
> http://gee.cs.oswego.edu/dl/jsr166/dist/extra166ydocs/extra166y/CustomConcurrentHashMap.html

^ Well spotted!! I hadn't seen it :)

It goes a little beyond with strong/weak map selection which is not important 
for us in the internal container right now (it could be if some crazy person 
decided to cache things crazy stuff like classloaders in Infinispan :O…)

It's interesting what he's done with Equivalence interface (better name than 
Comparing TBH), but can't see how he can make equals() typed on one of the 
elements… I need to revise my implementation to see if that's possible…

Dan, excellent feedback! As always :))

> _______________________________________________
> infinispan-dev mailing list
> [email protected]
> https://lists.jboss.org/mailman/listinfo/infinispan-dev


--
Galder Zamarreño
[email protected]
twitter.com/galderz

Project Lead, Escalante
http://escalante.io

Engineer, Infinispan
http://infinispan.org


_______________________________________________
infinispan-dev mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/infinispan-dev

Reply via email to