为Thread撰写两个子类,其中一个的run()在启动后取得第二个Thread object reference,然后调用wait()。另一个子类的run()在过了数秒之后调用notifyAll(),唤醒第一个线程,使第一个线程可以印出消息。
public class Itat2A_2
{
public static void main(String[] args)
{
A1 a1=new A1();
a1.start();
}
}
class A1 extends Thread
{
A1()
{
super();
}
public void run()
{
A2 a2=new A2();
a2.start();
try
{
synchronized (a2)
{ //同步的;
a2.wait();
}
System.out.println("me up");
}catch(Exception e)
{
e.printStackTrace();
}
}
}
class A2 extends Thread
{
A2()
{
super();
}
public void run()
{
try
{
A2.sleep(5000);
}catch(Exception e)
{
e.printStackTrace();
}
synchronized (this)
{
notifyAll();
}
}
}
//=======程序有了,我只想问一下,为什么要用 synchronized( ??){ } 这个呀,用到这里是什么意思呢?如果是为了同步,放到函数头上面就行了呀,但我放到函数头里,他会提示错说:a2不是自己的线程(大约是这个意思);