start()用来启动线程,这时无需等待run()方法体代码执行完毕而直接继续执行下面的代码:通过调用Thread类的start()方法此线程处于就需状态并没有运行,然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,她包含了要执行这个线程的内容,run方法运行结束,此线程终止。而cpu再运行其他线程。
run()当做普通的方法调用,程序还是要顺序执行,还是要等待run方法体执行完毕后才执行下面的代码,而如果直接用run方法,这只是调用一个方法而已,程序中依然只有主程序这一个线程,其程序执行路径还是一条,这样就没有达到写线程的目的。
举例说明:
public class TestThread(){
public static void main(String []args){
Runner1 r = new Runner1();
//r.run();//这是方法调用,而不是开启一个线程
Thread t = new Thread());//调用了Thread(Runnable target)方法。且父类对象变量指向子类对象。
t.start();
}
}
class Runner1 implements Runnable{//实现了这个接口,jdk就知道这个类是一个线程
public void run(){
for(int j=0;j<100;j++){
System.out.println("进入Runner1运行状态");
System.out.println(j);
}
}
}
for(int i=0;i<100;i++){
System.out.println("进入了mianThread的运行方法");
System.out.println(i);
}
|