/----------------------------------------------------/
我喜欢给代码按照自己的理解加注释,如果哪有不对的望批评指正!
class MyNumber
{int num;//定义一个整形数字,当做产品
boolean isRaw;//用来控制push和get两个方法
public synchronized void push(int num)//生产者生产
{
while (isRaw)//如果满了
{
try
{
wait();//等待,后面的语句不执行了
}
catch (InterruptedException e)
{
}
}
isRaw = true;//置为真,看做是已经生产了一个
this.num = num;//将参数赋值给本类的num(产品)
notify();//唤醒一个消费者线程
}
public synchronized int get()//消费者取
{
while (!isRaw)
{
try
{
wait();//如果是空的,就等待,表示取不了
}
catch (InterruptedException e)
{
}
}
//如果是满的,执行下面的代码
isRaw = false;//置空,看做取完了
notify();//唤醒等待的生产者
return num;//返回取到的数字
}
}