比如我两个线程a,b
他们有1个共享的变量buffer
然后buffer 类中有1个同步的方法
Public synchronized void method(int a){//注意这里有参数
...
}
然后首先执行a.buffer.method(8);由于某种条件wait了
这是执行b.buffer.method(9);顺利执行了,并且notify a了,a继续执行,然而请问就在a继续执行的时候 在a.buffer.method的方法里,那个参数,是不是变为9了????还是还是8????????
初学,求具体原理

解决方案 »

  1.   

    不清楚你的具体code,不过为什么你认为a.buffer.method的参数会变?这个方法还没结束,传入的参数怎么会变呢?
      

  2.   

    我是这样想的,由于是buffer共享变量,a.buffer 和b.buffer 其实指向的是1个地址
    那a.buffer调用method.并且wait了,那么b.buffer调用method(b)后,对这个buffer是不是有影响啊?
      

  3.   

    把具体伪代码发下阿
    两个线程A,B
    他们有1个共享的变量buffer
    然后buffer 类中有1个同步的方法
    Public synchronized void method(int num){
    if(thread.currentthread.getname == A)
      wait();
    else  if(thread.currentthread.getname == B)
     notifyall();System.out.println(num);...
    }
    然后首先执行a.buffer.method(8),wait了
    这时执行b.buffer.method(9);顺利执行了,并且notify a了,换a继续执行,然而请问就在a的继续输出 是 8还是9???????