Replace EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap with 
java.util.concurrent.ConcurrentHashMap
------------------------------------------------------------------------------------------------------------

                 Key: CLK-636
                 URL: https://issues.apache.org/jira/browse/CLK-636
             Project: Click
          Issue Type: Improvement
          Components: core
    Affects Versions: 2.2.0
            Reporter: Henry Saputra


Since Click required Java SDK 1.5 or later, we could leverage the 
java.util.concurrent.ConcurrentHashMap class to replace 
EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap class so reducing the 
Click runtime dependency.

In my opinion here are some good reasons why:
1. The ConcurrentHashMap class in Java SDK is more efficient since it utilizes 
internal hash classes to support better granularity and concurrency compare to 
simple syncrhonized on the instance like in 
DU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap.
2. Looking at the use case ConcurrentReaderHashMap in Click, it used to cache 
the OGNL expression (please correct me if I am wrong). This scenario does not 
need exclusive lock on update which is the intended/ preferred use case for 
ConcurrentReaderHashMap. If there is a miss on OGNL expression on a name in the 
cache, it will cerate one and put it to the map if no other thread has not. So 
it will still perform as well as or better locking entire table. However, if we 
do need exclusive lock on update, we can simulate ConcurrentReaderHashMap with 
ConcurrentHashMap by setting concurrencyLevel to one.
3. The ConcurrentHashMap support generic which is part of task being done to 
move Click code to Java generics.
4. Looks like the EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap 
class is created by Doug Lea before contributions to java.util.concurrent 
packages in Java 1.5 SDK so the code may no longer optimized.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to