不可以更动对象锁的引用

不可以更改对象锁的引用
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author max
 * 可以修改锁的内容,但不能修改锁的引用
 */
public class TestNotify{
    static Boolean lock = true;
//    static  A lock = new A(1);
    static Boolean condition = true;
    public static void main(String[] args) throws Exception{
        new TestThread().start();
        new TestThread().start();
        Thread.sleep(1000);
        System.out.println("Doing something");
        synchronized(lock){
//            Boolean b = lock;  //这样就可以了
//            lock.setA(0);      //语句1  改成condition ,赋值改变了lock的引用
            lock = false;
//            b.notifyAll();     //语句2
            lock.notifyAll();
        }
    }
}

class TestThread extends Thread{
    public void run(){
        synchronized(TestNotify.lock){
            while(TestNotify.lock){
//            while(TestNotify.lock.getA() == 1){    //改成condition
                try {
                    TestNotify.lock.wait();
                } catch (InterruptedException ex) {
                    Logger.getLogger(TestThread.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            System.out.println(getId());
        }
    }
}

class A{
    int a;
    public A(int i){
        a = i;
    }

    public void setA(int i){
        a = i;
    }

    public int getA()
    {
        return a;
    }
}