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