楼主你好。
这题的问题在于多线程的安全问题。为了保证多线程的安全,一般都会使用同步代码块或同步方法。
俗称“锁”。
以下附件是我在楼主代码基础上增加了同步代码块,请参考一下。
以下从Product的run代码中简单说明一下,若看不明白请回头再看看毕老师11天的讲课内容:
public void run() {
// TODO Auto-generated method stub
int i = 0;
while(true){
if(p.isExist == false){
synchronized(this.p){-------------------------------此处的代码即为访问共用变量的同步代码块,为了保证访问唯一性而上锁
p.name = "baozi_"+i;
p.isExist = true;
System.out.println("生产一个"+p.name+p.isExist);
i++;
}
}
}
|
|