黑马程序员技术交流社区

标题: 为什么下面的程序发生只输出一行内容就停住了? [打印本页]

作者: 方建平    时间: 2012-12-2 22:11
标题: 为什么下面的程序发生只输出一行内容就停住了?
上面程序结果只输出了一行
output----------------------name = Tom;sex = man
就卡住不动了,实在看不出什么原因啊!
  1. import java.util.*;
  2. class Resource
  3. {
  4.         public String name = null;
  5.         public String sex = null;
  6.         public Boolean empty = true;
  7.         public Resource(String name,String sex)
  8.         {
  9.                 this.name = name;
  10.                 this.sex = sex;
  11.                 this.empty = false;
  12.         }
  13. }
  14. class Inputer implements Runnable
  15. {
  16.         Resource res = null;
  17.         Random rand = new Random(47);
  18.         public Inputer(Resource res)
  19.         {
  20.                 this.res = res;
  21.         }
  22.         public void run()
  23.         {
  24.                 while(true)
  25.                 {
  26.                         if(res.empty == true)
  27.                         {
  28.                                 if((rand.nextInt(2) & 1) == 0 )
  29.                                 {
  30.                                         res.name = "Sheldon";
  31.                                         res.sex = "man";
  32.                                 }
  33.                                 else
  34.                                 {
  35.                                         res.name = "Avril";
  36.                                         res.sex = "woman";
  37.                                 }
  38.                                 res.empty = false;
  39.                                 System.out.println("input+++name = " + res.name + ";sex = " + res.sex);
  40.                         }
  41.                 }
  42.         }
  43. }
  44. class Outputer implements Runnable
  45. {
  46.         Resource res = null;
  47.         public Outputer(Resource res)
  48.         {
  49.                 this.res = res;
  50.         }
  51.         public void run()
  52.         {
  53.                 while(true)
  54.                 {
  55.                         if(res.empty == false)
  56.                         {
  57.                                 System.out.println("output----------------------name = " + res.name + ";sex = " + res.sex);
  58.                                 res.empty = true;
  59.                         }
  60.                 }
  61.         }
  62. }

  63. public class InputOutputDemo
  64. {
  65.         public static void main(String[] args)
  66.         {
  67.                 Resource res = new Resource("Tom","man");
  68.                 Thread t1 = new Thread(new Inputer(res));
  69.                 Thread t2 = new Thread(new Outputer(res));
  70.                 t1.start();
  71.                 t2.start();
  72.         }
  73. }
复制代码

作者: 黑马_张伟    时间: 2012-12-3 08:40
代码没有问题,我测试了。结果正确啊,一直输出的




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