方法体中的代码,都是自上而下执行,永远不变

run方法是用来封装被线程执行的代码
run方法的代码需要用start来调用,直接调用相当于普通方法的调用
start()方法,启动线程,然后由由jvm【java虚拟机】调用此线程的run方法

package xiancheng.MyThread;

public class ThreadTest {
//java程序有一个main主线程和回收机制线程

public static void main(String[] args) {
//新建一个分支线程对象
MyThread myThread = new MyThread();
//启动线程
//start()方法的作用:启动一个分支线程,在jvm中开辟一块新的栈空间,这段代码任务完成后,瞬间就结束了
//只要新的栈空间开出来,start()方法就结束了,线程就启动成功了
//启动成功的线程会自动调用run方法,并且run方法在分支栈的栈底部(压栈)
//run方法在分支栈的栈底部,main方法在主栈的栈底部,run和main是平级

// myThread.run();//不会启动线程,不会分配新的分支栈(这种方式是单线程)

myThread.start();
//这里的代码还是运行在主线程中
for (int i =0;i<100;i++){
System.out.println("主线程---》"+i);
}
}
}
class MyThread extends Thread{

@Override
public void run() {
//编写程序,这段程序运行在分支线程中(分支栈)
for (int i = 0; i<100; i++){
System.out.println("分支线程--》"+i);
}
}

}

Java多线程-继承Thread类实现多线程_后端

参考链接:
​​​https://www.bilibili.com/video/BV1Rx411876f?p=762​