}
}
class Q
{
String name="陈琼";
String sex="女";
}
class Consumer implements Runnable
{
Q q=null;
public Consumer(Q q)
{
this.q=q;
}
public void run()
{
while(true)
{
System.out.println(q.name + "---->" + q.sex);
}
}
}
public class ThreadCommunation
{
public static void main(String [] args)
{
Q q=new Q();
new Thread(new Producer(q)).start();
new Thread(new Consumer(q)).start();
}
}
这时再运行程序,可以发现结果出现了错误,这个时候可以才用前面提到的同步方法,对类Q中的代码进行同步,为了说明问题,在类Q中加入两个新方法,一个是设置,一个是取值
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.put("张孝祥","男") ;
}
else
{
q.put("陈琼","女") ;
}
i=(i+1)%2;
}
}
}
class Q
{
private String name="陈琼";
private String sex="女";
public synchronized void put(String name,String sex)
{
this.name = name ;
共21页 第1页 第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页






