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

题目求解答
有3个线程:zhangXiao、zhengMing和teacher,其中2线程zhangXiao和zhengMing准备休眠10秒钟后,再分别输出“老师好!”和“good   morning”。teacher线程在输出5句“上课”后,吵醒休眠的线程:zhangXiao、zhengMing。请编写程序实现以上过程。

------解决方案--------------------
public class Test implements Runnable
{
Thread zhangXiao, zhengMing, teacher;

String lock = new String( " ");

boolean runOk = true;

int count;

public void go()
{
teacher = new Thread(this);
teacher.setName( "teacher ");
teacher.start();

zhangXiao = new ThreadZhangXiao();
zhangXiao.setName( "zhangXiao ");
zhangXiao.start();

zhengMing = new ThreadZhengMing();
zhengMing.setName( "zhengMing ");
zhengMing.start();

}

public static void main(String[] args)
{
new Test().go();
// System.out.println(Thread.currentThread().getName());
}

public void run()
{

while (runOk)
{
count++;
System.out.println( "Class Begins! ");
if (count > = 5)
{
synchronized (zhangXiao)
{
zhangXiao.notify();
runOk = false;
}

synchronized (zhengMing)
{
zhengMing.notify();
runOk = false;
}
}
}
}

class ThreadZhangXiao extends Thread
{
public void run()
{
try
{
synchronized (zhangXiao)
{
while (runOk)
{
zhangXiao.wait();
}
System.out
.println( "zhangXiao says: Good morning, Teacher! ");
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}

class ThreadZhengMing extends Thread
{
public void run()
{
try
{
synchronized (zhengMing)
{
while (runOk)
{
zhengMing.wait();
}
System.out
.println( "zhengMing says: Good morning, Teacher! ");
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}

}
}