JavaMemoryModel: Slight simplification of semantics on System.in, System.out, System.err

From: Bill Pugh (pugh@cs.umd.edu)
Date: Tue Aug 03 2004 - 14:50:55 EDT


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