This type of construct creates some trick code. You iterate over the keys, and I assume somewhere in the code you do clients.get(key). Well there is no guarantee the the key is associated. I bet there are a ton of other issues as your iterator in the read phase drifts from reality of changing clients HashMap. Anyway, I hope you documented this heavily.
-dain
On Thursday, February 13, 2003, at 12:28 PM, Hiram Chirino wrote:
Yep.. your way is valid too but you take a synchronization hit on every read. The otherway, the performace hit is on the write. As I said previously, if you read the map ALLOT more than you write to it, then it makes sense to do it backwards.Regards, Hiram --- Dain Sundstrom <[EMAIL PROTECTED]> wrote:This seems backwards to me. I usually do something like this: class X { HashMap clients = new HashMap(); public void someMethod() { synchronized(clients) { m.put(dc, cq); } ... } public void someOtherMethod() { HashMap clientsCopy = null; synchronized(clients) { clientsCopy = new HashMap(clients); } Iterator i = clientsCopy.keySet().iterator(); while( i.hasNext() ) { ... } } } For the insert, you only get a quick synchronized around the add, and on iteration you get a single copy in the synchronize. If the iteration very small and quick, I sometimes put the entire iteration in the synchronized block, but you need to be careful about open calls. -dain On Thursday, February 13, 2003, at 11:20 AM, Scott M Stark wrote:I have seen this usage construct in a few placesin the code and itmakes no sense to me: class X { HashMap clients = new HashMap(); public void someMethod() { synchronized(clients) { HashMap m = new HashMap(clients); m.put(dc, cq); clients=m; } ... } public void someOtherMethod() { Iterator i = clients.keySet().iterator(); while( i.hasNext() ) { ... } } } The unsynchronized clients HashMap is synchronizedand copied whenmodified and accessed without synchronization inother contexts. Thisis not thread safe for the accesses and makes forvery expensive updates.Why isn't the HashMap simply synchronized and usedwithout copying?xxxxxxxxxxxxxxxxxxxxxxxx Scott Stark Chief Technology Officer JBoss Group, LLC xxxxxxxxxxxxxxxxxxxxxxxx-------------------------------------------------------This SF.NET email is sponsored by: FREE SSL Guidefrom Thawteare you planning your Web Server Security? Clickhere to get a FREEThawte SSL guide and find the answers to all yourSSL security issues.http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0026en_______________________________________________ Jboss-development mailing list [EMAIL PROTECTED]https://lists.sourceforge.net/lists/listinfo/jboss-development-------------------------------------------------------This SF.NET email is sponsored by: FREE SSL Guide from Thawte are you planning your Web Server Security? Click here to get a FREE Thawte SSL guide and find the answers to all your SSL security issues.http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0026en_______________________________________________ Jboss-development mailing list [EMAIL PROTECTED]https://lists.sourceforge.net/lists/listinfo/jboss-development __________________________________________________ Do you Yahoo!? Yahoo! Shopping - Send Flowers for Valentine's Day http://shopping.yahoo.com ------------------------------------------------------- This SF.NET email is sponsored by: FREE SSL Guide from Thawte are you planning your Web Server Security? Click here to get a FREE Thawte SSL guide and find the answers to all your SSL security issues. http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0026en _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development
------------------------------------------------------- This SF.NET email is sponsored by: FREE SSL Guide from Thawte are you planning your Web Server Security? Click here to get a FREE Thawte SSL guide and find the answers to all your SSL security issues. http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0026en _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development