A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 横溢天使 中级黑马   /  2015-9-26 12:03  /  240 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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那我真心听不懂,还请大神们详细讲解一下,在下提前谢谢了
复制代码

1 个回复

倒序浏览
是不是if(flag)表示flag是true?所以Input才等待?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马