This one looks to me as if it is not subject to double-checked locking type
problems.  I think it is fine, since the copy is made in a synchronized
block and accessed in the same thread.

david jencks

On 2003.02.13 12:35 Dain Sundstrom 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 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
> 
> 


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