In the sample code I pasted, there is nothing to prevent the fill(1) and 
fill(2) from running concurrently, and essentially write into the same array 
concurrently. My intent was that the fill(1) be complete before the second 
thread proceeds.

A simple change to have the 1st thread instead fill a temporary byte[] followed 
by assigning the temporary reference to the static volatile byte[] causes the 
program to no longer print “false”. 

This behavior, while it doesn't prove anything, is consistent with the JLS 
paragraph I quoted.

But, it doesn't disprove Alexandru's claim either...

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to