黑马程序员技术交流社区

标题: 关于线程间通讯问题 [打印本页]

作者: 天涯无痕    时间: 2014-8-13 19:39
标题: 关于线程间通讯问题
  1. class res
  2. {
  3.         String name;
  4.         String sex;
  5.         boolean flag=false;
  6. }
  7. class input implements Runnable
  8. {
  9.         private res r;
  10.         input(res r)
  11.         {
  12.                 this.r=r;
  13.         }
  14.         public void run()
  15.         {
  16.                 int x=0;
  17.                 while(true)
  18.                 {
  19.                         if (r.flag)
  20.                                 try
  21.                                 {
  22.                                         r.wait();
  23.                                 }
  24.                                 catch(Exception e)
  25.                                 {
  26.                                 }
  27.                         synchronized(r)
  28.                         {
  29.                                 if (x==0)
  30.                                 {
  31.                                         r.name="lilei";
  32.                                         r.sex="man";
  33.                                 }
  34.                                         else
  35.                                         {
  36.                                                 r.name="韩梅梅";
  37.                                                 r.sex="女女女";
  38.                                         }
  39.                                 x=(x+1)%2;
  40.                                 r.flag=true;
  41.                                 r.notify();
  42.                         }
  43.                        


  44.                 }
  45.         }
  46. }
  47. class output implements Runnable
  48. {
  49.         private res r;
  50.         output(res r)
  51.                         {
  52.                                 this.r=r;
  53.                         }
  54.         public void run()
  55.         {

  56.                 while(true)
  57.                 {
  58.                         if(!r.flag)
  59.                                 try
  60.                                 {
  61.                                         r.wait();
  62.                                 }
  63.                                 catch(Exception e)
  64.                                 {
  65.                                 }
  66.                         synchronized(r)
  67.                         {
  68.                                 System.out.println(r.name+"----"+r.sex);
  69.                                 r.flag=false;
  70.                                 r.notify();
  71.                         }
  72.                        
  73.                 }
  74.         }
  75. }


  76. class  Inputoutput
  77. {
  78.         public static void main(String[] args)
  79.         {
  80.                 res r=new res();
  81.                 input in =new input(r);
  82.                 output out =new output(r);
  83.                 Thread a=new Thread(in);
  84.                 Thread b=new Thread(out);
  85.                 a.start();
  86.                 b.start();

  87.         }
  88. }
复制代码
为什么我的和毕老师的执行结果不一样啊    什么原因造成的?

作者: 天涯无痕    时间: 2014-8-13 19:50
同志们  帮忙解决一下啊
作者: 小糊涂神    时间: 2014-8-13 20:49
没看出哪有问题,水平达不到啊,放在MyEclipse上让软件给你找找




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