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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王运科 中级黑马   /  2012-3-31 20:35  /  3415 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

11 个回复

倒序浏览
线程名.start()
回复 使用道具 举报
启动线程当然用start
用start启动一个线程后,如果该线程获得了调度而运行,那总得让它干点事吧,run方法主要就是用来定义线程在运行时要干的事。
回复 使用道具 举报
启动线程用start();

使用实现接口Runnable的对象创建一个线程时,启动该线程将调用对象的 run 方法。

在子类对象复写该接口Runnable中的run()方法
回复 使用道具 举报
创建线程继承Thread类,重写run方法;或实现Runnable接口,重写run方法.
开启线程用start()。
回复 使用道具 举报
首先run方法中存放的是线程要执行的代码。start()启动线程。
如果你直接调用run方法 将会出现一个线程执行一次run方法中的代码,直到上一次带代码执行完了,下一个进程才行再次执run方法。这样根本就没达到多线程的效果,还是单线程。
就好比早期的火车站买票,一个火车站就一个窗口,我们只能一个一个排队买,这样的效率极低。要是有100多好人就要疯了。
这个时候我们就要使用开启多个窗口,容纳几百人购票,这个就是多线程的操作。
而start()就好比火车站的开始售票标识。
所以strat一旦开始,多个线程就抢着去执行run方法中的代码。

回复 使用道具 举报
开启线程用start()。
回复 使用道具 举报
在后面视频中好想有个专门的开启线池的 方法
回复 使用道具 举报
开启线程只有一个start方法,它是使该线程开始执行;Java 虚拟机调用该线程的 run 方法
而run方法,仅仅是Runnable的子类对象对其run方法的复写,执行时,仍是在主线程中,并未开启线程
回复 使用道具 举报
开启线程用start()。  
run方法中存放的是线程要执行的代码
回复 使用道具 举报
用start方法,run方法只是让线程运行,线程都没开启,所以调用run方法根本也没用,start方法有两个功能,一是启动线程,二是自动调用run方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马