黑马程序员技术交流社区

标题: 多线程(线程间通信——代码优化)其实少优化了一个地方 [打印本页]

作者: 汪洋大海    时间: 2013-10-24 21:22
标题: 多线程(线程间通信——代码优化)其实少优化了一个地方
  1. class Res
  2. {
  3.         private String name;
  4.         private String sex;
  5.         private boolean flag = false;

  6.         public synchronized void set(String name,String sex)
  7.         {
  8.                 if(flag)
  9.                         try{this.wait();}catch(Exception e){}
  10.                 this.name = name;
  11.                
  12.                 this.sex = sex;
  13.                 flag = true;
  14.                 this.notify();
  15.         }
  16.         public synchronized void out()
  17.         {
  18.                 if(!flag)
  19.                         try{this.wait();}catch(Exception e){}
  20.                 System.out.println(name+"........"+sex);
  21.                 flag = false;
  22.                 this.notify();
  23.         }
  24. }

  25. class Input implements Runnable
  26. {
  27.         private Res r ;
  28.         Input(Res r)
  29.         {
  30.                 this.r = r;
  31.         }
  32.         public void run()
  33.         {
  34.                 int x = 0;
  35.                 while(true)
  36.                 {
  37.                         if(x==0)                           //这里可以去掉       
  38.                                 r.set("mike","man");                               
  39.                         else                                   //这里可以去掉
  40.                                 r.set("丽丽","女女女女女");                               
  41.                         x = (x+1)%2;                       //这里可以去掉
  42.                 }
  43.         }
  44. }

  45. class Output implements Runnable
  46. {
  47.         private Res r ;
  48.        
  49.         Output(Res r)
  50.         {
  51.                 this.r = r;
  52.         }
  53.         public void run()
  54.         {
  55.                 while(true)
  56.                 {
  57.                         r.out();
  58.                 }
  59.         }
  60. }


  61. class  InputOutputDemo2
  62. {
  63.         public static void main(String[] args)
  64.         {
  65.                 Res r = new Res();

  66.                 new Thread(new Input(r)).start();
  67.                 new Thread(new Output(r)).start();
  68.                 /*
  69.                 Input in = new Input(r);
  70.                 Output out = new Output(r);

  71.                 Thread t1 = new Thread(in);
  72.                 Thread t2 = new Thread(out);

  73.                 t1.start();
  74.                 t2.start();
  75.                 */
  76.         }
  77. }

复制代码
毕老师忘了删除那三句话。刚好看到这里就发现了。呵呵。

作者: 風諾    时间: 2013-10-24 23:11
为什么要去掉?
作者: 漫步人    时间: 2013-10-24 23:39
是啊!为什么?




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