class Resource
{
private String name;
private int num=1;
boolean flag=false;
public synchronized void setName(String name)
{
if(flag)
{
try
{
this.wait();
}
catch (InterruptedException e)
{
}
}
this.name=name+num;
num++;
System.out.println(Thread.currentThread().getName()+"..生产.."+this.name);
flag=true;
this.notify();
}
public synchronized void getName()
{
if(!flag)
{
try
{
this.wait();
}
catch (InterruptedException e)
{
}
}
System.out.println(Thread.currentThread().getName()+"..销售.."+this.name);
flag=false;
this.notify();
}
}
在setName中,能用this.name是因为在方法中一开始引入了变量name(不知道这么说对不对),可是在getName中,为什么能用this.name?
不好意思,是我提问的方式有问题,我的意思是
在setName中,我重新声明了一次name变量,让this.name=name+num,但是这个应该只存在于setName中才对啊。
但是在getName中使用this.name,应该this.name=name才对,但是在运行的时候,getName中的this.name也等于name+num了,为什么呢?