[concurrency-interest] Curious: How Java Memory Model is satisfied in JSR166 locks?
Jason T. Greene
jason.greene at redhat.com
Tue Aug 21 19:38:00 EDT 2007
Bill Pugh wrote:
> Don't use the term "memory barrier" in the Java context.
>
> Nothing in Java establishing a memory barrier. Thinking of memory
> barriers in Java can lead you down a bad path.
I was answering from a hardware context (mainly because hotspot was
mentioned), of how its possible that volatile access could/would affect
the visibility of other values in memory. Although I agree I should have
given more information and a proper link to the JMM.
> Various operations establish a happens-before ordering:
> * from an unlock on a monitor to a later lock of the same monitor
> * from a volatile write to a later volatile read of the same field
> * from an update to a later read of an atomic field (e.g., compare and
> swap)
>
> There is nothing that make it impossible/difficult/wrong for special
> methods, defined by the JVM, to establish happens-before orderings.
Yes not wrong, just slow ;)
> From the viewpoint of the user of a library, you don't care whether a
> happens-before ordering is established, just that it is. Having
> consistent documentation of which pairs of operations establish
> happens-before orderings would be a good thing, and an attempt to
> provide that documentation has been made for java.util.concurrent*
Agreed, although I find that many people are interested in some of the
details, especially when they are thinking about performance. As far as
documentation goes, I think concurrent has done an exceptional job.
--
Jason T. Greene
Lead, POJO Cache
JBoss, a division of Red Hat
More information about the Concurrency-interest
mailing list