哪里有问题?
class Producer implements Runnable //缓冲区内容生产者
{
Q q;
public Producer(Q q)
{
this.q = q;
}
public void run()
{
int i = 0;
while(true)
{
synchronized(q) //和消费者同步
{
if (q.full)
{
try {q.wait();}catch(Exception e){}
}
if (i == 0)
{
q.name = "zhangsan";
q.sex = "male";
}
else
{
q.name = "lisi";
q.sex = "female";
}
q.full = true;
q.notify();
}
i = (i+1) % 2;
}
}
}
class Consumer implements Runnable
{
Q q;
public Consumer(Q q)
{
this.q = q;
}
public void run()
{
while(true)
{
synchronized(q)
{
if (!q.full)
{
try {q.wait();}catch(Exception e){}
}
System.out.print(q.name);
System.out.println(" " + q.sex);
q.full = false;
q.notify(); //wait notify语句必须放在synchronized中
}
}
}
}
class Q
{
public String name = "unknown";
public String sex = "unknown";
public boolean full = false;
}
class Threadcommunation
{
public static void main(String [] args)
{
Q q = new Q();
new Thread(new Producer(q)).start(); //传的都是一个q,所以synchronized(q)
new Thread(new Consumer(q)).start();
}
问题点数:100、回复次数:2Top
1 楼qfll_1981(清风寥寥)回复于 2006-02-21 11:20:56 得分 100
最后少个}Top
2 楼interpb(曾曾胡,深怕情多累美人!)回复于 2006-02-21 11:28:32 得分 0
到底是什么错误
Top




