2、 生产者放了若干次的数据,消费者才开始取数据,或者是,消费者取完一个数据后,还没等到生产者放入新的数据,又重复取出已取过的数据。
问题的解决:
class Producer implements Runnable
{
public void run()
{
while(true)
{
编写往数据存储空间放入数据的代码
}
}
}
class Consumer implements Runnable
{
public void run()
{
while(true)
{
编写从数据存储空间读取数据的代码
}
}
}
定义一个新的类来作为数据存储空间
class Q
{
String name ;
String sex ;
}
Producer和Consumer中的run函数都需要操作类Q的同一个对象实例
程序清单:ThreadCommunation.java
class Producer implements Runnable
{
Q q=null;
public Producer(Q q)
{
this.q=q;
}
public void run()
{
int i=0;
while(true)
{
if(i==0)
{
q.name="张孝祥";
q.sex="男";
}
else
{
q.name="陈琼";
q.sex="女";
}
i=(i+1)%2;
}
}
}
class Q
{
String name="陈琼";
String sex="女";
}
class Consumer implements Runnable
{
Q q=null;
public Consumer(Q q)
{
this.q=q;
}
public void run()
共21页 第1页 第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页






