A couple questions about construction/initialization safety:
If I understand correctly, some of the proposed fixes to JMM are
designed so that immutable objects can be accessed without
synchronization once they are constructed.
Q1: These guarantees don't address bean-style construction (akin to
factory-style construction), right?
    For example, given:
        Bean bean = new Bean();
        bean.setFoo(fooValue);
        bean.setBar(barValue);
        return bean;
    If one thread initializes the bean and publishes it and another
thread accesses the bean without synch., then the accessing thread may
see an uninitialized bean.
Q2: Have any guarantees been proposed concerning the API's that rely on
'init' methods?  Applets and Servlets fall into this category.
    public Servlet {
        int[] arr;
        public init() {
            arr = new int[] { 1, 2, 3, 4 };
        }
        public service(request, response) {
            // access arr ...
        }
    }
If the API guarantees that 'init' is called "first", can we assume that
sufficient synchronization is being performed behind the scenes to make
this kind of thing thread-safe?  Or should 'service' synch on 'arr'?
-- Joe Bowbeer------------------------------- JavaMemoryModel mailing list - http://www.cs.umd.edu/~pugh/java/memoryModel
This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:00:27 EDT