黑马程序员技术交流社区

标题: 等待唤醒机制提问 [打印本页]

作者: 横溢天使    时间: 2015-9-26 12:03
标题: 等待唤醒机制提问
  1. class InputOutputDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Res r=new Res();
  6.                 Input i=new Input(r);
  7.                 Output o=new Output(r);
  8.                 Thread t=new Thread(i);
  9.                 Thread t1=new Thread(o);
  10.                 t.start();
  11.                 t1.start();
  12.         }
  13. }
  14. class Res
  15. {
  16.         String name;
  17.         String sex;
  18.         boolean flag;
  19. }
  20. class Input implements Runnable
  21. {
  22.         private Res r;
  23.         Input(Res r)
  24.         {
  25.                 this.r=r;
  26.         }
  27.         public void run()
  28.         {
  29.                 int x=0;
  30.                 while(true)
  31.                 {
  32.                         synchronized(r)
  33.                         {
  34.                                 if(!r.flag)
  35.                                         try{r.wait();}catch (Exception e){}
  36.                                 if(x==0)
  37.                                 {
  38.                                         r.name="Mike";
  39.                                         r.sex="man";
  40.                                 }
  41.                                 else
  42.                                 {
  43.                                         r.name="丽丽";
  44.                                         r.sex="女女";
  45.                                 }
  46.                                 x=(x+1)%2;
  47.                                 r.flag=false;
  48.                                 r.notify();

  49.                         }
  50.                 }
  51.         }
  52. }
  53. class Output implements Runnable
  54. {
  55.         private Res r;
  56.         Output(Res r)
  57.         {
  58.                 this.r=r;
  59.         }
  60.         public void run()
  61.         {
  62.                 while(true)
  63.                 {
  64.                         synchronized(r)
  65.                         {
  66.                                 if(!r.flag)
  67.                                         try{r.wait();}catch (Exception e){}
  68.                                 System.out.println(r.name+"*****"+r.sex);
  69.                                 r.flag=true;
  70.                                 r.notify();
  71.                         }
  72.                 }
  73.         }
  74. }
  75. 毕老师讲的flag那我真心听不懂,还请大神们详细讲解一下,在下提前谢谢了
复制代码

作者: 横溢天使    时间: 2015-9-26 12:50
是不是if(flag)表示flag是true?所以Input才等待?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2