java主线程唤醒子线程的疑问

来源:互联网 发布:安卓视频播放器网络 编辑:程序博客网 时间:2024/05/21 03:27
public class Example{
    public static void main(String args[]){
        A target=new A();    //线程thread的目标对象 
        Thread thread=new Thread(target);
        thread.setName("张三");
        thread.start();
        while(target.getStop()==false){}
        System.out.println("我是主线程,负责恢复"+thread.getName()+"线程"); 
        target.restart();  //恢复thread线程
    }

class A implements Runnable{
    int number=0;
    boolean stop=false;
    boolean getStop(){
            return stop;
    }
    public void run(){
        while(true){
            number++;
            System.out.println(Thread.currentThread().getName()+"的number="+number);
            if(number==3){
                try{  System.out.println(Thread.currentThread().getName()+"被挂起");
                     stop=true;
                     hangUP();//挂起线程
                     System.out.println(Thread.currentThread().getName()+"恢复执行");
                } 
                catch(Exception e){}  
            }
            try{ Thread.sleep(1000); 
            } 
           catch(Exception e){}
        }
    }
    public synchronized void  hangUP() throws InterruptedException{
        wait();  
    }
    public synchronized void  restart(){
        notifyAll();
    }
}




求教,main方法中的空循环是做什么用的?初学线程,不是很理解。
while(target.getStop()==false){}
等待target线程结束,target线程运行在主线程main里面,如果没有这个空循环,主线程顺序执行,target还没有执行完得时候主线程已经执行完退出了,会导致target也退出。
原创粉丝点击