SAX2: NSUtils.java

Miles Sabin msabin at cromwellmedia.co.uk
Wed Dec 15 18:04:35 GMT 1999


Toivo Lainevool wrote,
> Miles Sabin wrote,
> > I fear there are some big problems here. In particular,
> ... snip ...
> > 	String name = (String)joinNameTable.get(qName);
> ... snip ...
> > Is rather nastily thread-unsafe: the shared qName could be
> > read/written by multiple threads in joinName(). You should
> > either synchronize this method, or create a new QName locally.
>
> Hashtable get() and put() are synchronized, so the read/write 
> operations are thread safe.  No need to have separate 
> synchronized blocks.

True but that wasn't the problem I was pointing to. You snipped
out the important bits and left the bit that was OK ;-)

    private static QName qName;

    public static String joinName
      (String uriPart, String localPart)
    {
	qName.uri = uriPart;      // Unsynchronized write of
	qName.local = localPart;  // shared qName
	String name = (String)joinNameTable.get(qName);
                                         //   ^^^^^
                                         // Unsynchronized read of
                                         // shared qName
      // ... etc ...
    }

Hashtable.get() being synchronized doesn't help here.

Cheers,


Miles

-- 
Miles Sabin                       Cromwell Media
Internet Systems Architect        5/6 Glenthorne Mews
+44 (0)20 8817 4030               London, W6 0LJ, England
msabin at cromwellmedia.com          http://www.cromwellmedia.com/


xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To unsubscribe, mailto:majordomo at ic.ac.uk the following message;
unsubscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)





More information about the Xml-dev mailing list