Resync j.u.c and Update ConcurrentHashMap to v8 (original) (raw)

Martin Buchholz martinrb at google.com
Tue May 28 21:26:19 UTC 2013


On Fri, May 24, 2013 at 8:17 PM, Mike Duigou <mike.duigou at oracle.com> wrote:

- It was surprising (and somewhat disappointing) to see changes like the following in various places. Is iterator creation that expensive? I'd hate to have to go back to using old style for loops everywhere. - List<Future> futures = new ArrayList<Future>(tasks.size()); + ArrayList<Future> futures = new ArrayList<Future>(tasks.size()); Why not 'List<Future> futures = new ArrayList<>(tasks.size());' ? and - for (Future f : futures) - f.cancel(true); + for (int i = 0, size = futures.size(); i < size; i++)_ _+ futures.get(i).cancel(true);_ _Use forEach(f -> { f.cancel(true);}) ?

I don't think we want to use higher-level constructs in the implementation of core libraries until all the popular VM implementations make the overhead unmeasurably small, which is unlikely to happen - at least here, where the cost is only a few bytes, not lines, of code. Elsewhere, I am also on the side of trying to persuade Doug to write slightly less extreme code.



More information about the core-libs-dev mailing list