RFR 8005704: Update ConcurrentHashMap to v8
Mike Duigou
mike.duigou at oracle.com
Tue May 28 19:07:39 UTC 2013
Hi Chris & Doug;
- I don't feel strongly about the removal of AbstractMap. I don't see this as very likely to cause problems in real world code though there is probably some test code somewhere that assigns CHM to an AbstractMap.
- I don't see the advantage to exposing the ConcurrentHashMap.KeySetView type particularly for newKeySet(). Why not return Set<K>? The additional methods don't seem to offer much that's desirable for the newKeySet() case.
- I am reluctant to deprecate contains(Object) here unless we deprecate it in Hashtable as well. I recognize that this has been a source of errors (https://issues.apache.org/bugzilla/show_bug.cgi?id=48755 for one example). Is it time to deprecate it there as well?
- I think there could be more complete description of the parallelismThreshold and interaction with common pool. i.e. does "maximal parallelism" mean one thread per element or "size() / getCommonPoolParallelism()". Some advice for choosing in-between values would be good unless "1" is the best advice for cases where you just don't know. It would be a shame to see people shooting themselves in the foot with this.
Mike
On May 27 2013, at 07:30 , Chris Hegarty wrote:
> Since my previous failed attempt to update the j.u.c. world, this review is for the update to j.u.c.ConcurrentHashMap v8 from Doug's CVS.
>
> http://cr.openjdk.java.net/~chegar/8005704/ver.00/specdiff/java/util/concurrent/package-summary.html
> http://cr.openjdk.java.net/~chegar/8005704/ver.00/webrev/
>
> A few initial comments:
>
> 1) CHM no longer extends AbstractMap. I guess this should not be a
> problem in the real world, and I guess users would not be too
> surprised by instanceof checks. Just worth highlighting the change
> for compatibility.
>
> 2) KeySetView.spliterator()
>
> I guess the API should also report CONCURRENT, NONNULL & SUBSIZED?
> And the implementation should return SIZED too?
>
> 3) Value/EntrySpliterator.spliterator() should return SIZED?
>
> 4) Does is make sense for KeySetView to be Serializable? It looks a
> little odd with value as its only field.
>
> -Chris.
More information about the core-libs-dev
mailing list