首先声明,我是一只菜鸟。下面的java程序没能够得到"name--zhangshan sex--male","name--lihong sex--female"的交替循环输出。我看了很久,不知道错在哪里,求help。谢了!!!!class Q
{
private String name="unknown";
private String sex="unknown";
public synchronized void put(String name,String sex)
{
this.name=name;
this.sex=sex;
try
{
wait();
}
catch(InterruptedException e)
{
e.getMessage();
}
}
public synchronized void get()
{
System.out.print("name--"+name);
System.out.println(" sex--"+sex);
notify();
}
}
class ThreadA implements Runnable
{
Q q;
public ThreadA(Q q)
{
this.q=q;
}
int i=1;
public void run()
{
while(true)
{
if(i==1)
q.put("zhangshan","male");
if(i==0)
q.put("lihong","female");
i=(i+1)%2;
}
}
}
class ThreadB implements Runnable
{
Q q;
public ThreadB(Q q)
{
this.q=q;
}
public void run()
{
while(true)
{
q.get();
}
}
}
class WaitDemo
{
public static void main(String [] args)
{
Q q=new Q();
Thread t1=new Thread(new ThreadA(q));
Thread t2=new Thread(new ThreadB(q));
t1.start();
t2.start();
}
}
{
private String name="unknown";
private String sex="unknown";
public synchronized void put(String name,String sex)
{
this.name=name;
this.sex=sex;
try
{
wait();
}
catch(InterruptedException e)
{
e.getMessage();
}
}
public synchronized void get()
{
System.out.print("name--"+name);
System.out.println(" sex--"+sex);
notify();
}
}
class ThreadA implements Runnable
{
Q q;
public ThreadA(Q q)
{
this.q=q;
}
int i=1;
public void run()
{
while(true)
{
if(i==1)
q.put("zhangshan","male");
if(i==0)
q.put("lihong","female");
i=(i+1)%2;
}
}
}
class ThreadB implements Runnable
{
Q q;
public ThreadB(Q q)
{
this.q=q;
}
public void run()
{
while(true)
{
q.get();
}
}
}
class WaitDemo
{
public static void main(String [] args)
{
Q q=new Q();
Thread t1=new Thread(new ThreadA(q));
Thread t2=new Thread(new ThreadB(q));
t1.start();
t2.start();
}
}
Q q; public ThreadB(Q q) {
this.q = q;
} public void run() { while (true) {
q.get();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}}