[concurrency-interest] Basic thread safetyquestion:final/volatile/synchronized fields
David Holmes
dcholmes at optusnet.com.au
Wed Dec 20 18:45:48 EST 2006
Chris,
> >Passing an object through a thread-safe queue is a common means of
> >safe publication.
>
> This is where I commonly get confused because of reachability concerns,
> such as your typical parent-child relationships. If object A is
> effectively immutable I understand it's published safely through a
> thread-safe queue. But what about the references held by A? If A has a
> reference to B, is B also then considered to be safely published?
Safe-publication is transitive (because happens-before is transitive) as
long as construction happens correctly. Eg:
construct B
construct A, storing reference to B
safely-publish A
get B
works fine as B was also safely published as the construction of B happend
before the construction of A which happened-before the use of B by virtue of
safe-publication.
Of course if you mutate B, or change the B reference in A, after the
publication then that actin must itself be synchronized.
Cheers,
David Holmes
More information about the Concurrency-interest
mailing list