Kathey Marsden wrote:
Daniel John Debrunner wrote:
Actually string constants are by definition interned, so
synchronized(DERBY_JVM_ID) is the same as
synchronized(DERBY_JVM_ID.intern()) since DERBY_JVM_ID is a reference
to a string constant. Though using intern() wouldn't harm and might
make the code more readable.
Silly question. Would an interned string allow synchronization across
classloaders?
If not, how do I synchronize two threads using different classloaders.
Kathey
Yes. The intern() provides a reference that will be identical regardless
of any current class loader because the String class will only be loaded
once by the jvm. You can google for other folks using the same trick, or
using other objects that are guaranteed to be loaded once such as
Integer.class, Integer.TYPE etc.
Dan.