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

From: Bill Pugh (
Date: Tue Aug 03 2004 - 14:50:55 EDT

We used to have a special section on these fields giving them different

In thinking about it, it suffices to say:
*, 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

 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.out, and System.err
* barriers imposed by the synchronization performed when class
   is checked.


JavaMemoryModel mailing list -

This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:01:08 EDT