On 26/03/15 14:42, Jason Mehrens wrote:
The snapshot enumeration is a welcomed change. ConcurrentHashMap has legacy
Hashtable methods so you can save a little bit by calling namedLoggers.keys()
instead of wrapping the key set.
Yes - but the enumeration returned by ConcurrentHashMap.keys
is in fact an iterator which will let you remove keys.
I explicitly chose to use Collections.enumeration instead
to prevent providing unintended access.
best regards,
-- daniel
Jason
----------------------------------------
Date: Thu, 26 Mar 2015 14:32:23 +0100
From: daniel.fu...@oracle.com
To: david.hol...@oracle.com; core-libs-dev@openjdk.java.net
Subject: Re: RFR: 7113878: LogManager - namedLoggers should be
ConcurrentHashMap instead of Hashtable
On 26/03/15 13:28, David Holmes wrote:
Hi Daniel,
On 26/03/2015 10:08 PM, Daniel Fuchs wrote:
Please find below a trivial fix for
7113878: LogManager - namedLoggers should be ConcurrentHashMap
instead of Hashtable
As you say in the bug report, now that the map is always accessed within
synchronized code this serves no purpose. The map not only doesn't need
to be concurrent, it doesn't even need to be thread-safe! So why not
replace with a simple HashMap?
You found me out ;-) I should have mentioned it.
The enumeration of keys returned from the map will be iterated
outside of any synchronized block.
ConcurrentHashMap makes this safe.
best regards,
-- daniel
David
https://bugs.openjdk.java.net/browse/JDK-7113878
http://cr.openjdk.java.net/~dfuchs/webrev_7113878/webrev.00
best regards,
-- daniel