As I understand the JMM, an empty synchronized block
is not automatically uesless. For example, the test
below is well-synchronized. Is this correct?
class Obj {
    private static Object SOMETHING = new Object();
    private int x;
    public void setX(int x) {
        this.x = x;
        synchronized(SOMETHING) {}
    }
    public int getX() {
        synchronized(SOMETHING) {}
        return x;
    }
}
Initially, global = null.
Thread 1:
    Obj obj = new Obj();
    obj.setX(3);
    global = obj;
Thread 2:
    Obj obj = global;
    if (obj != null)
        System.out.println(obj.getX());
Can this code print 0?
Doron.
=====
Doron Rajwan, mailto:doron@rajwan.org
-------------------------------
JavaMemoryModel mailing list - http://www.cs.umd.edu/~pugh/java/memoryModel
This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:01:04 EDT