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 places in the code and it makes
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 synchronized and copied when
modified and accessed without synchronization in other contexts. This is
not thread safe for the accesses and makes for very expensive updates.
Why isn't the HashMap simply synchronized and used without copying?

xxxxxxxxxxxxxxxxxxxxxxxx
Scott Stark
Chief Technology Officer
JBoss Group, LLC
xxxxxxxxxxxxxxxxxxxxxxxx


-------------------------------------------------------
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

Reply via email to