1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码;
2.run()方法当作普通方法的方式调用,程序还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码;
通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。
然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止,而CPU再运行其它线程。
而如果直接用Run方法,这只是调用一个方法而已,程序中依然只有主线程--这一个线程,其程序执行路径还是只有一条,这样就没有达到写线程的目的。
实例,如果都只调用run()方法,结果还是在主线程中执行的
public class ThreadTest01{
public static void main(String[] args) {
//创建线程
Thread t = new Processor01();
//启动线程
// t.start();//这段代码执行瞬间结束,告诉 jvm再分配一个新的栈给t线程
//run不需要程序员手动调用,系统线程启动后,自动调用run方法
t.run(); //这是普通的方法调用,这样做程序只有一个线程,run方法结束后,下面的程序才能够继续执行
Processor02 t2= new Processor02();
// new Thread(t2).start();
t2.run();
//这段代码在 主线程中运行
for (int i = 0; i <50; i++) {
System.out.println( Thread.currentThread().getName()+ "--"+ "main ---->" + i);
}
//有了多线程后,main方法结束之时主线程栈中没有方法栈帧了
//但是其他线程或者其他栈中还有 栈帧
//main方法结束,程序可能还在运行
}
}
//定义线程
class Processor01 extends Thread{
public void run() {
for(int i =0 ;i<50;i++) {
System.out.println( Thread.currentThread().getName()+"--"+ "Thread run---->"+ i);
}
}
}
class Processor02 implements Runnable{
@Override
public void run() {
for (int i = 0; i <50; i++) {
System.out.println( Thread.currentThread().getName()+ "--"+ "runnable run ---->" + i);
}
}
}
结果:
main--Thread run---->0
main--Thread run---->1
main--Thread run---->2
main--Thread run---->3
main--Thread run---->4
main--Thread run---->5
main--Thread run---->6
main--Thread run---->7
main--Thread run---->8
main--Thread run---->9
main--Thread run---->10
main--Thread run---->11
main--Thread run---->12
main--Thread run---->13
main--Thread run---->14
main--Thread run---->15
main--Thread run---->16
main--Thread run---->17
main--Thread run---->18
main--Thread run---->19
main--Thread run---->20
main--Thread run---->21
main--Thread run---->22
main--Thread run---->23
main--Thread run---->24
main--Thread run---->25
main--Thread run---->26
main--Thread run---->27
main--Thread run---->28
main--Thread run---->29
main--Thread run---->30
main--Thread run---->31
main--Thread run---->32
main--Thread run---->33
main--Thread run---->34
main--Thread run---->35
main--Thread run---->36
main--Thread run---->37
main--Thread run---->38
main--Thread run---->39
main--Thread run---->40
main--Thread run---->41
main--Thread run---->42
main--Thread run---->43
main--Thread run---->44
main--Thread run---->45
main--Thread run---->46
main--Thread run---->47
main--Thread run---->48
main--Thread run---->49
main--runnable run ---->0
main--runnable run ---->1
main--runnable run ---->2
main--runnable run ---->3
main--runnable run ---->4
main--runnable run ---->5
main--runnable run ---->6
main--runnable run ---->7
main--runnable run ---->8
main--runnable run ---->9
main--runnable run ---->10
main--runnable run ---->11
main--runnable run ---->12
main--runnable run ---->13
main--runnable run ---->14
main--runnable run ---->15
main--runnable run ---->16
main--runnable run ---->17
main--runnable run ---->18
main--runnable run ---->19
main--runnable run ---->20
main--runnable run ---->21
main--runnable run ---->22
main--runnable run ---->23
main--runnable run ---->24
main--runnable run ---->25
main--runnable run ---->26
main--runnable run ---->27
main--runnable run ---->28
main--runnable run ---->29
main--runnable run ---->30
main--runnable run ---->31
main--runnable run ---->32
main--runnable run ---->33
main--runnable run ---->34
main--runnable run ---->35
main--runnable run ---->36
main--runnable run ---->37
main--runnable run ---->38
main--runnable run ---->39
main--runnable run ---->40
main--runnable run ---->41
main--runnable run ---->42
main--runnable run ---->43
main--runnable run ---->44
main--runnable run ---->45
main--runnable run ---->46
main--runnable run ---->47
main--runnable run ---->48
main--runnable run ---->49
main--main ---->0
main--main ---->1
main--main ---->2
main--main ---->3
main--main ---->4
main--main ---->5
main--main ---->6
main--main ---->7
main--main ---->8
main--main ---->9
main--main ---->10
main--main ---->11
main--main ---->12
main--main ---->13
main--main ---->14
main--main ---->15
main--main ---->16
main--main ---->17
main--main ---->18
main--main ---->19
main--main ---->20
main--main ---->21
main--main ---->22
main--main ---->23
main--main ---->24
main--main ---->25
main--main ---->26
main--main ---->27
main--main ---->28
main--main ---->29
main--main ---->30
main--main ---->31
main--main ---->32
main--main ---->33
main--main ---->34
main--main ---->35
main--main ---->36
main--main ---->37
main--main ---->38
main--main ---->39
main--main ---->40
main--main ---->41
main--main ---->42
main--main ---->43
main--main ---->44
main--main ---->45
main--main ---->46
main--main ---->47
main--main ---->48
main--main ---->49