多线程中的wait()和notify()

来源:互联网 发布:c语言中 p 编辑:程序博客网 时间:2024/05/19 08:05

public class   Res{

       String name;

       String sex;

      boolean  flag = false;

}

class Input implement  Runnable {

       private Res r;

     private Input(Res r){    

        this.r=r;

    }

  public  void run(){

    int x=0;

  while(true){

      synchronized(r){           保证和下面的是同一个锁

           if(r.flag){

                try{   r.wait()} catch{} 

           }

          if(x==0){

               r.name="JACK";

              r.sex='man";

           }else{

             r.name="LUSE"; 

             r.sex="woman":

          }

      x=(x+1)%2;

    r.flag=true;

   r.notify();

     }

   }

   }

}


class Output  implement Runnable{

      private Res r;

      private Output(Res r){

       this.r =r;       

     }

     public  void  run(){

      while(true){

            synchronized(r){

                 if(r.flag){  r.wait() }catch{}

                syso(r.name+"  :  "+r,sex);

              r.flag = false;

              r.notify();

           }

       }

     }

}


class InputOutputDemo{

      main{

            Res r = new Res();

         Input in = new Input(r);

         Output out = new Output(r);

          Thread t1 = new Thread(in);

          Thread t2 = new Thread(out);

          t1.start();

         t2.start();

        

    }

}

原创粉丝点击