少年阿宾

那些青春的岁月

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
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也退出。
posted on 2012-11-17 01:38 abin 阅读(1156) 评论(0)  编辑  收藏 所属分类: JavaMultithread

只有注册用户登录后才能发表评论。


网站导航: