黑马程序员技术交流社区

标题: 多线程的一个问题 请教大家 谢谢 [打印本页]

作者: 沙漠里的小鱼    时间: 2012-2-26 15:02
标题: 多线程的一个问题 请教大家 谢谢
本帖最后由 沙漠里的小鱼 于 2012-2-26 15:03 编辑

class Hello extends Thread {   
  public void run() {   
  for (int i = 0; i < 7; i++) {   
  if (count > 0) {   
  System.out.println("count= " + count--);   
  }   
  }   
}  

public static void main(String[] args) {   
  hello h1 = new hello();   
  hello h2 = new hello();   
hello h3 = new hello();   
  h1.start();   
  h2.start();   
h3.start();   
}   
  private int count = 5;  
}  
我想问的是这个程序为什么 要加for (int i = 0; i < 7; i++) 这个语句 没有这个语句这个多线程也可以运行啊 为什么要加呢 谢谢
作者: 吴璞玉    时间: 2012-2-26 15:21
嗯,如果你不定义这个循环的话是只会打印一次count,for则可以循环打印count,当然他并不影响多线程的运行,另外你的类叫做Hello,定义对象时要写对哦
作者: 冯兵兵    时间: 2012-2-26 16:01
恩,run()方法中存放的是线程要执行的代码。定义for循环是为了线程执行时间更长一点,结果更直观一些,不定义for循环,程序也会没问题的。也可以写其他的语句如While循环等,LZ没有必要为这纠结
作者: 翟友伟    时间: 2012-2-26 16:19
楼上 正确
循环的体现   只是给你 看看 多线程的效果  如果不循环  程序直接秒了 运行结果看不出来
加了 循环语句 可以看出明显 的输出结果  对比不同线程 。
话说 只运行7次 效果 不明显     我看视频中的最起码 100次  才能直观
作者: 朱皓    时间: 2012-2-26 16:21
本帖最后由 朱皓 于 2012-2-26 18:17 编辑

使用for方法就是为了使你能够更加清晰的看到线程在运行,如果加上Thread.sleep(1000)会更明显,例如
class Hello extends Thread {   
  public void run() {   
  for (int i = 0; i < 7; i++) {   
  if (count > 0) {   
  System.out.println("count= " + count--);   
         Thread.sleep(1000)
  }   
  }   
}  


作者: 张乃智    时间: 2012-2-26 18:05
这个程序是让楼主体会多线程程序是乱序执行的,加For循环语句能更好的显示出效果,若没有For循环每个线程执行一次就结束则不能显示出多线程程序乱序执行的特点。
作者: 沈样    时间: 2012-2-26 18:47
多线程是都是跟循环的,否则不如不写多线程
作者: 吴华二    时间: 2012-3-18 10:48
因为线程Thread在启动start()方法的时,会重写父类的run(),也就开始执行run()方法。使用for循环是为了能看出线程执行的一个过程!当然你不使用for循环也没问题。为了方便才使用它来测试!但是从你这个程序我看出一个问题就是,我们在使用线程类的时候,最好的方法是实现Runnable接口,如果说你是继承Thread类的话,因为继承是单继承。而实现接口就不同了,一个类可以实现多个接口!不受继承的那个条件约束...




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