sync加在方法上什么意思?就是说,在一个应用内,任何时间只能有一个地方对这个对象的这个方法进行调用。保证线性。

解决方案 »

  1.   

    put和get是同步的
    可惜打印的地方不是同步的如果你把输出语句写在put和get函数内部,输出结果是唯一的
    public synchronized void put(int i) {
    ...
    System.out.println("Put "+i);
    }
    public synchronized int get() {
    ...
    System.out.println("\tGet "+value);
    return value;
    }
    输出唯一结果:
    Put 1
    Get 1
    Put 2
    Get 2
    Put 3
    Get 3
    Put 4
    Get 4
    Put 5
    Get 5
      

  2.   

    synchronized 非静态方法只是保护当前实例 
    synchronized 静态方法才是包括类所有共享的数据 
      

  3.   


    synchronized (isEmpty)
    {
    XXXX;
    XXX;
    XX;
    X;
    }
    个人比较喜欢这种写法