We used to have a special section on these fields giving them different 
semantics.
In thinking about it, it suffices to say:
* System.in, System.out and System.out can be modified by 
System.setIn(...), ... etc.
* all other final static fields can only be modified in the class 
initializer for the class that defined
   them
 From that, you can derive everything you need to know, such as the fact 
that you can hoist
reads of final static fields across synchronization barriers, except, 
in general, for:
* reads of System.in, System.out, and System.err
* barriers imposed by the synchronization performed when class 
initialization
   is checked.
Bill
-------------------------------
JavaMemoryModel mailing list - http://www.cs.umd.edu/~pugh/java/memoryModel
This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:01:08 EDT