The problem in the JaasSecurityManager class example below is that the
domainCache variable itself needs to be protected with synchronization
since its non-final (for all domainCache read/write operations.)
It is not fine as one thread could be performing updateCache(Principal),
meanwhile, another thread assigns a new value to domainCache. The
thread performing updateCache, wouldn't have a consistent memory view of
the new domainCache and also violates atomicity.
On Tue, 2006-04-11 at 23:51 -0500, Scott M Stark wrote:
> I'm trying to understand the full implication of the intellij
> synchronization on non-final fields warning, which has this description:
>
> This inspection reports instances of synchronized statements where the
> lock expression is a non-final field. Such statements are unlikely to
> have useful semantics, as different threads may be locking on different
> objects even when operating on the same object.
>
> An example usage is the following where a multiple operations on the
> domainCache variable is done in a synchronized block so that the
> remove/insert are atomic:
>
> public class JaasSecurityManager
> {
> private CachePolicy domainCache;
>
> private Subject updateCache(Principal principal)
> {
> synchronized( domainCache )
> {
> if( domainCache.peek(principal) != null )
> domainCache.remove(principal);
> domainCache.insert(principal, info);
> }
> }
> }
>
> In going over the current memory model docs:
> http://www.cs.umd.edu/~pugh/java/memoryModel/
> http://gee.cs.oswego.edu/dl/jmm/cookbook.html
> http://www.cs.umd.edu/~pugh/java/memoryModel/jsr133.pdf
>
> The only context I can see where this warning applies is if the
> domainCache variable is being changed. In that case two threads may
> actually be synchronizing/working on different objects, but that is fine
> in this case as the atomic block of ops only applies to the domainCache
> object. If other state was being referenced I can see a problem, but not
> for the illustrated usage.
>
> Am I missing something here?
>
> xxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Scott Stark
> VP Architecture & Technology
> JBoss Inc.
> xxxxxxxxxxxxxxxxxxxxxxxxxxxx
>
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by xPML, a groundbreaking scripting language
> that extends applications into web and mobile media. Attend the live webcast
> and join the prime developer group breaking into this new coding territory!
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid0944&bid$1720&dat1642
> _______________________________________________
> JBoss-Development mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/jboss-development
-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
JBoss-Development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-development