日期:2014-05-20  浏览次数:20667 次

有关线程的一个小程序,求解答
public class T extends Thread{

private int num;

public T(int num)
{
this.num = num;
}

public void run()
{
synchronized(this)
{
while(this.num < 50)
{
try
{
this.wait();
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
System.out.println(this.num);
this.num += 2;
this.notify();
}
}

static class Tj extends Thread
{
private int num;

public Tj(int num)
{
this.num = num;
}

public void run()
{
synchronized(this)
{
while(this.num < 50)
{
try
{
this.wait();
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
System.out.println(this.num);
this.num += 2;
this.notify();
}

}
}

public static void main(String[] args) {

(new Thread(new T(1))).start();
(new Thread(new Tj(0))).start();
}

}
程序的目的是利用多线程顺序输出奇数偶数,我自己也不清楚到底是什么问题,或者是程序本身就不对,希望论坛里的朋友帮忙解决一下,非常感激。

------解决方案--------------------
麻烦你下次打些空格号码,找括号配对看累死了。
目测你只能执行到wait啊,wait之后要能够执行到notify才会被唤醒,你这种把notify直接放在wait后面有什么意义啊。wait和notify要在不同的线程中被执行才有意义,而你这是在同一个线程中分先后执行,那notify将永远都执行不到。
------解决方案--------------------
把num改成static的试试。