# 136. 初识线程
线程,英文名叫做 Thread,是 java 程序执行的发动机。就是线程运行着我们的代码
一个程序就是操作系统的一个进程,英文名叫做 Process。一个进程下可以有很多个线程
# 线程的执行
线程其实就是执行一个入口方法,执行完毕就结束了。比如我们之前写的程序,都是使用一个线程执行 main 方法,执行完毕后,线程就结束了。
线程在执行方法的时候,每次遇到方法调用,都会给当前的线程栈增加一层。这一层里保存的,就是线程当前的执行状态,比如当前方法的局部变量值,当前方法执行到哪里了等。
所以线程栈里的每一条,都是方法已经开始执行但是还没有结束的方法。没有结束是因为它代码还没执行完,或者是在等待其调用的方法执行完。
举个例子:
package com.geekbang.whatisthread;
public class StopALittle {
public static void main(String[] args) throws InterruptedException {
printSlowly("太阳在这个平静的小村庄缓缓升起,又是开始了平常的一天。我们故事的主人公睡眼惺忪的起来\n" +
"......", 300);
}
public static void printSlowly(String text, long interval) throws InterruptedException {
for (char ch : text.toCharArray()) {
Thread.sleep(interval);
System.out.print(ch);
}
System.out.println();
}
}
举个例子:
package com.geekbang.whatisthread;
public class StopAndSeeThread {
public static void main(String[] args) {
m1();
}
private static void m1(){
m2();
}
private static void m2() {
int a =999;
m3();
}
private static void m3() {
int a =333;
m4();
}
private static void m4() {
m5();
}
private static void m5() {
int a = 555;
m6();
}
private static void m6() {
System.out.println("断点停住");
}
}
可以看到每执行一个方法,都会在线程栈增加一条
提示
调用方法不会启动新的线程,只会让当前的线程在当前的stack上创建一个新的frame,用来给方法里的局部变量,参数等分配内存空间。
只有Thread对象的start方法才会创建一个新的线程。