A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沙漠里的小鱼 黑马帝   /  2012-2-26 15:02  /  2440 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 沙漠里的小鱼 于 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++) 这个语句 没有这个语句这个多线程也可以运行啊 为什么要加呢 谢谢

7 个回复

倒序浏览

回帖奖励 +3

嗯,如果你不定义这个循环的话是只会打印一次count,for则可以循环打印count,当然他并不影响多线程的运行,另外你的类叫做Hello,定义对象时要写对哦
回复 使用道具 举报
恩,run()方法中存放的是线程要执行的代码。定义for循环是为了线程执行时间更长一点,结果更直观一些,不定义for循环,程序也会没问题的。也可以写其他的语句如While循环等,LZ没有必要为这纠结
回复 使用道具 举报
楼上 正确
循环的体现   只是给你 看看 多线程的效果  如果不循环  程序直接秒了 运行结果看不出来
加了 循环语句 可以看出明显 的输出结果  对比不同线程 。
话说 只运行7次 效果 不明显     我看视频中的最起码 100次  才能直观
回复 使用道具 举报
本帖最后由 朱皓 于 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)
  }   
  }   
}  

回复 使用道具 举报
这个程序是让楼主体会多线程程序是乱序执行的,加For循环语句能更好的显示出效果,若没有For循环每个线程执行一次就结束则不能显示出多线程程序乱序执行的特点。
回复 使用道具 举报
沈样 黑马帝 2012-2-26 18:47:55
7#
多线程是都是跟循环的,否则不如不写多线程
回复 使用道具 举报
因为线程Thread在启动start()方法的时,会重写父类的run(),也就开始执行run()方法。使用for循环是为了能看出线程执行的一个过程!当然你不使用for循环也没问题。为了方便才使用它来测试!但是从你这个程序我看出一个问题就是,我们在使用线程类的时候,最好的方法是实现Runnable接口,如果说你是继承Thread类的话,因为继承是单继承。而实现接口就不同了,一个类可以实现多个接口!不受继承的那个条件约束...
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马