黑马程序员技术交流社区

标题: 启动线程使用run()还是start()? [打印本页]

作者: 温立华    时间: 2013-3-18 21:44
标题: 启动线程使用run()还是start()?
本帖最后由 温立华 于 2013-3-19 15:38 编辑

启动线程使用run()还是start()?

作者: 刘海浩    时间: 2013-3-18 21:46
启动线程肯定要用start()方法。当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。当cpu分配给它时间时,才开始执行run()方法(如果有的话)。START()是方法,它调用RUN()方法.而RUN()方法是你必须重写的. run()方法中包含的是线程的主体。


作者: 张善颖    时间: 2013-3-18 21:46
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
作者: HM汪磊    时间: 2013-3-18 22:04

启动线程要用start()方法,好好看视频
作者: 伍淑江    时间: 2013-3-18 22:40
调用start()  线程开始执行;Java 虚拟机又调用该线程的 run 方法。
换句话说 start( )就像是一把钥匙,用它启动线程后,就自动调用了run( )
作者: 黑马-郑玉元    时间: 2013-3-18 22:40
  1. class ThreadDemo1 {

  2. public static void main(String[] args) {
  3. MyThread mt = new MyThread(); // 4.创建线程对象
  4. mt.start(); // 5.开启新线程, 内部会自动执行run方法

  5. for (int i = 0; i < 1000; i++)
  6. System.out.println("A");
  7. }

  8. }

  9. class MyThread extends Thread { // 1.定义类继承Thread
  10. public void run() { // 2.重写run方法
  11. for (int i = 0; i < 1000; i++) // 3.把新线程要做的事写在run方法中
  12. System.out.println("B");
  13. }
  14. }
复制代码
  1. class ThreadDemo2 {

  2. public static void main(String[] args) {
  3. MyRunnable mr = new MyRunnable(); // 4.创建自定义的Runnable对象
  4. Thread t = new Thread(mr); // 5.创建Thread对象, 传入Runnable
  5. t.start(); // 6.调用start()开启新线程, 内部会自动调用Runnable的run()方法

  6. for (int i = 0; i < 1000; i++)
  7. System.out.println("C");
  8. }

  9. }

  10. class MyRunnable implements Runnable { // 1.定义类实现Runnable接口
  11. public void run() { // 2.实现run方法
  12. for (int i = 0; i < 1000; i++) // 3.把新线程要做的事写在run方法中
  13. System.out.println("D");
  14. }
  15. }
复制代码
上面是两种创建线程的方式,步骤代码都很详细了,相信你能看得懂!!也能理解透!!!

作者: 董霁辉    时间: 2013-3-18 23:43
1、start()方法,启动线程
2、run()方法中是你要允许的内容,且必须重写覆盖Runnable的run()方法
希望对你有帮助
作者: 祁振朋    时间: 2013-3-18 23:59
startpublic void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。 结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。 多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。
抛出: IllegalThreadStateException - 如果线程已经启动。

请参考JDK API规范
作者: 黑马-王鹏    时间: 2013-3-19 00:15
1.定以类继承Thread类
  2.复写Thraed类中的方法的目的:将自定义代码存放在run()方法中,让线程运行
   3.调用线程的start的作用:启动线程,调用run()方法
作者: 赵鸿富    时间: 2013-3-19 09:59
启动线程用start()方法。
start()开始一个线程后,线程就进入准备状态,使线程所代表的虚拟处理机处于可运行状态
start()是方法能调用run()方法.而run()方法是要重写的. run()方法中包含的是线程的主体。

作者: 谭辉    时间: 2013-3-19 10:11
启动线程时start()方法,start方法启动线程后调用run()
作者: 葛晓红    时间: 2013-3-19 13:06
run()方法中存放的是线程要执行的代码段,start()方法的作用是开启线程并调用run()方法!
作者: 陈丽莉    时间: 2013-3-19 14:29
若还有问题,请继续追问;没问题的话,请将帖子分类改成【已解决】。




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