代码如下:
目的是要打出“张三”“男”,“李四”“女”。但是我只能打印出“张三”的信息,却无法打印出“李四”的信息,请问这是怎么回事?谢谢
class Producer implements Runnable
{
Q q;
public Producer(Q q)
{
this.q = q;
}
public void run()
{
int i=0;
while(true)
{
synchronized(q)
{
if(i==0)
{
q.name="zhangsan";
try{Thread.sleep(1);}catch(Exception e){}
q.sex="male";
System.out.println(i);
}
else
{
q.name="lisi";
q.sex="female";
}
}
i=(i+1)%2;
}
}
}
class Consumer implements Runnable
{
Q q;
public Consumer(Q q)
{
this.q = q;
}
public void run()
{
while(true)
{
synchronized(q)
{
System.out.print(q.name);
System.out.println(":" + q.sex);
}
}
}
}
class Q
{
String name="unknown";
String sex="unknown";
}
class ThreadCommunication
{
public static void main(String[] args)
{
Q q = new Q();
new Thread(new Producer(q)).start();
new Thread(new Consumer(q)).start();
}
}