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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 温立华 中级黑马   /  2013-3-18 21:44  /  3320 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 温立华 于 2013-3-19 15:38 编辑

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

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 这种题不知道怎么会问呢,下次注意。.

查看全部评分

12 个回复

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

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报

启动线程要用start()方法,好好看视频
回复 使用道具 举报
调用start()  线程开始执行;Java 虚拟机又调用该线程的 run 方法。
换句话说 start( )就像是一把钥匙,用它启动线程后,就自动调用了run( )
回复 使用道具 举报
  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. }
复制代码
上面是两种创建线程的方式,步骤代码都很详细了,相信你能看得懂!!也能理解透!!!

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

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

请参考JDK API规范
回复 使用道具 举报
1.定以类继承Thread类
  2.复写Thraed类中的方法的目的:将自定义代码存放在run()方法中,让线程运行
   3.调用线程的start的作用:启动线程,调用run()方法
回复 使用道具 举报
启动线程用start()方法。
start()开始一个线程后,线程就进入准备状态,使线程所代表的虚拟处理机处于可运行状态
start()是方法能调用run()方法.而run()方法是要重写的. run()方法中包含的是线程的主体。
回复 使用道具 举报
启动线程时start()方法,start方法启动线程后调用run()
回复 使用道具 举报
run()方法中存放的是线程要执行的代码段,start()方法的作用是开启线程并调用run()方法!
回复 使用道具 举报
若还有问题,请继续追问;没问题的话,请将帖子分类改成【已解决】。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马