黑马程序员技术交流社区
标题:
关于线程的run()方法
[打印本页]
作者:
pvting
时间:
2014-9-9 23:51
标题:
关于线程的run()方法
本帖最后由 pvting 于 2014-9-10 00:14 编辑
学过线程的都知道的,调用线程一般都用start来起一个线程,而类里面的方法名是run,为什么不直接调用run方法呢?
作者:
daoqin
时间:
2014-9-9 23:57
java中thread的start()和run()的区别:
1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码:通过调用Thread类的start()方法,启动一个线程,这时此线程是处于就绪状态,并没有运行。然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止,而CPU再运行其它线程.
2.run()方法当作普通方法的方式调用,程序还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码:而如果直接用Run方法,这只是调用一个方法而已,程序中依然只有主线程--这一个线程,其程序执行路径还是只有一条,这样就没有达到写线程的目的。
作者:
zhangxun
时间:
2014-9-10 00:10
楼上正解
作者:
逍遥呆
时间:
2014-9-10 00:18
可以直接记住就行了,start()是开启线程,你是可以直接调用run方法,可是没开启线程,这就没实现它的功能,那继承还是实现都没意义了。
作者:
谢建平
时间:
2014-9-10 01:27
应该是为了 直接调用方法 和启动线程都不冲突 ,同时存在的吧
作者:
孤守星空
时间:
2014-9-10 07:25
给你看到入学测试题
分析以下程序运行结果,说明原理。(没有分析结果不得分)
public class ThreadTest {
public static void main(String args[]) {
MyThread t = new MyThread();
t.run();
t.start();
System.out.println("A");
}
}
class MyThread extends Thread {
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
System.out.println("B");
}
}
作者:
彭卫红
时间:
2014-9-10 07:31
1 楼分析很好
作者:
pvting
时间:
2014-9-11 18:09
谢谢各位的回答,我明白了
作者:
MR.Sun
时间:
2014-9-11 18:29
一楼正解!
作者:
郭.威
时间:
2014-9-14 00:28
这块我也麻烦的很
作者:
ZZT
时间:
2016-5-11 16:14
qasnnnnnmmmm
作者:
小小飞碟
时间:
2016-5-17 13:50
都分析的不错,学到东西了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2