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.
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;
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)
More information about the Xml-dev