Hi Clemens,
On 19/08/2011 10:34 AM, Clemens Eisserer wrote:
Hi David,
Part of the missing picture here is how AppContexts get created and
dispose()'d as it may be that the way AppContext is used you can't
actually get concurrent modification of numAppContexts. But there's no
way to discern that from the AppContext code so it would be safer to use
the AtomicInteger.
I had a look how AppContexts are created, and at least the IcedTea plugin
calls SunToolkit.createNewAppContext() in a fresh thread without any
synchronization (as does caciocavallo-web).
I don't this with all the code the non-atomicity of operations on
numAppContexts is a real-world problem, but on the other hand - it wouldn't
hurt to have this replaced with correct code ;)
Agreed.
Though it is also interesting to note that the only use of numAppContexts is
for the shortcut lookup of the main app context when numAppContexts==1. It's
not clear to me why this case needs to be handled specially. I also can't
tell what code would be calling getAppContext under those conditions.
Anyway, use of AtomicInteger is correct and should be "harmless".
Cheers,
David