1 /*
2 * 实现线程的第一种方法:
3 * 编写一个类,直接继承java.lang.Thread,重写run()方法
4 */
5 public class XianCheng01 {
6 public static void main(String[] args) {
7 // 这里是主方法main方法,这里的代码属于主线程,在主栈中运行。
8 // 新建一个分支线程对象
9 MyThread t = new MyThread();
10 // t.run();不会启动线程,不会分配新的分支栈。
11 // 启动线程
12 // start()方法的作用是:启动一个分支线程,在JVM中开辟一个新的栈空间,这段代码任务完成后,瞬间就结束了。
13 // 这段代码的任务只是为了开辟一块新的栈空间,只要新的栈空间开辟出来,start()方法就结束了,线程就启动了。
14 // 启动成功的线程会自动调用run方法,并且run方法在分支栈的栈底部。
15 // run方法在分支栈的底部,main方法在主栈的栈底部,run方法和main方法是平级的。
16 t.start();
17 // 这里的代码还是运行在主线程中
18 for (int i = 0; i < 1000; i++) {
19 System.out.println("主线程--->" + i);
20 }
21 }
22
23 }
24
25 class MyThread extends Thread {
26
27 @Override
28 public void run() {
29 // 编写程序,这段程序运行在分支线程中(分支栈)
30 for (int i = 0; i <= 100; i++) {
31 System.out.println("分支线程--->" + i);
32 }
33 }
34 }