黑马程序员技术交流社区
标题:
run();方法和start()方法
[打印本页]
作者:
sd110572
时间:
2013-12-6 23:02
标题:
run();方法和start()方法
有什么区别么?是不是都要调用Runnable接口的run()方法?
class Runner implements Runnable{
@Override
public void run() {
System.out.println("Run begin");
}
}
public class TestStartAndRun {
public static void main(String[] args) {
Runner r = new Runner();
Thread t = new Thread(r);
r.run(); //这两个方法有什么区别?
t.start(); //这两个方法有什么区别?
}
}
复制代码
作者:
依然
时间:
2013-12-6 23:05
本帖最后由 依然 于 2013-12-6 23:07 编辑
r.run(); 方法只是调用run()方法而已,并没有开线程;
r.start();方法即调用了run()方法,也开启了新的一个线程;
作者:
wangchao1686
时间:
2013-12-6 23:08
Thread类中run()和start()方法的区别如下:
run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;
start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程;
作者:
王家胜
时间:
2013-12-7 04:18
public void run()如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。
public void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。
start才是多线程启动线程的方法,run只是掉用run方法而已
class Runner implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName());;
}
}
public class TestStartAndRun {
public static void main(String[] args) {
Runner r = new Runner();
Thread t = new Thread(r);
//r.run(); //这两个方法有什么区别?
t.start(); //这两个方法有什么区别?
}
}
复制代码
输出Thread-0 可见创建了一个线程
class Runner implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName());;
}
}
public class TestStartAndRun {
public static void main(String[] args) {
Runner r = new Runner();
Thread t = new Thread(r);
r.run(); //这两个方法有什么区别?
//t.start(); //这两个方法有什么区别?
}
}
复制代码
输出mian 可见线程是main线程而没有创建线程
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2