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

解决方案 »

  1.   

    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();
    }
    } }
    }