黑马程序员技术交流社区

标题: 多线程代码 [打印本页]

作者: 张智文    时间: 2013-8-10 08:32
标题: 多线程代码
  1. class Res
  2. {
  3.         String name;
  4.         String sex;
  5.         boolean flag = false;
  6. }

  7. class Input implements Runnable
  8. {
  9.         private Res s;
  10.         Input(Res s)
  11.         {
  12.                 this.s = s;
  13.         }
  14.         public void run()
  15.         {
  16.                 //boolean b = true;
  17.                 int x = 0;
  18.                 while(true)
  19.                 {
  20.                         synchronized(Res.class)
  21.                         {
  22.                                 if(s.flag)
  23.                                         try{Res.class.wait();}catch(Exception e){}
  24.                                 if(x==0)
  25.                                 {
  26.                                         s.name = "Jack";
  27.                                         s.sex = "man";
  28.                                         //b=false;
  29.                                 }
  30.                                 else
  31.                                 {
  32.                                         s.name = "丽丽";
  33.                                         s.sex = "女";
  34.                                         //b=true;
  35.                                 }
  36.                                 x = (x+1)%2;
  37.                                 s.flag = true;
  38.                                 Res.class.notify();
  39.                         }
  40.                 }
  41.         }
  42. }

  43. class Output implements Runnable
  44. {
  45.         private Res s;
  46.         Output(Res s)
  47.         {
  48.                 this.s = s;
  49.         }
  50.         public void run()
  51.         {
  52.                
  53.                 while(true)
  54.                 {
  55.                         
  56.                         synchronized(Res.class)
  57.                         {
  58.                                 if(!s.flag)
  59.                                 try{Res.class.wait();}catch(Exception e){}
  60.                                 System.out.println(s.name+"...."+s.sex);
  61.                                 s.flag = true;
  62.                                 Res.class.notify();
  63.                         }
  64.                         
  65.                 }
  66.         }
  67. }

  68. public class InputOutputDemo
  69. {
  70.         public static void main(String[] args)
  71.         {
  72.                 Res s = new Res();
  73.                 Input i = new Input(s);
  74.                 Output o = new Output(s);
  75.                
  76.                 Thread t1 = new Thread(i);
  77.                 Thread t2 = new Thread(o);
  78.                
  79.                 t1.start();
  80.                 t2.start();
  81.         }
  82. }

复制代码
//照着毕老师的一点点自己打的。结果又不对。愁啊。。求帮忙看看
作者: 以防万一    时间: 2013-8-10 09:18
亲,我想说我运行的没有错误。。。


我想之所你你运行会出错是因为你的文件名跟类名不一致导致的,你把文件名改成InputOutputDemo.java看下。
作者: 张智文    时间: 2013-8-10 09:20
杨璐敏 发表于 2013-8-10 09:18
亲,我想说我运行的没有错误。。。

是结果和老师的不一样。。
作者: 以防万一    时间: 2013-8-10 09:21
多线程的结果每次都不一样的。。。
作者: 神之梦    时间: 2013-8-10 17:20
杨璐敏 发表于 2013-8-10 09:18
亲,我想说我运行的没有错误。。。

亲,不错哦
作者: 以防万一    时间: 2013-8-10 20:26
神之梦 发表于 2013-8-10 17:20
亲,不错哦

虽然进步比较慢,,,但总比停滞不前好多了是吧

嘿嘿
作者: 黄兴旺    时间: 2013-8-10 22:16
我来看看......




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