1.线程
单线程程序
在单线程程序中,“在某一时间点执行的处理”只有一个。如果有人问起“程序的哪部分正在执行”,我们能够指着程序中的某- -处回答说“这里,就是这儿”。这是因为,在单线程程序中,“正在执行程序的主体”只有一个。
public class Main {public static void main(String[] args) {for (int i = 0; i < 10000; i++) {System.out.println("Good!");}}}

注意:前面说的“只有一个线程在运行”。其实严格来讲,Java处理的后台也有线程在运行。例如垃圾回收线程、GUI相关线程等。
多线程程序
由多个线程组成的程序就称为多线程程序
- GUI应用程序
- 耗时的I/O处理
- 多个客户端
Thread类中的run方法和start方法
启动线程时,要使用如下类(一般称为Thread类):java. lang . Thread
新启动的线程的操作都编写在**run**方法中,**新线程启动后,会调用`run`方法,随后,当run方法执行结束时,线程也会跟着终止,但如果仅是这样,程序什么操作也不会做,所以必须新启动一个线程,调用run方法才可以。

`start()`方法主要执行以下操作**
- 启动新线程
- 调用run方法
顺序、并行、并发
- 【顺序(sequential)】:多个操作“依次处理”,十个操作一个人处理,这个人一个个按顺序执行
- 【并行(parallel)】:多个操作“同时处理”,十个操作分给两个人处理,两个人并行处理
- 【并发(concurrent)】:将一个操作分割成多个部分,并且允许无序处理,比如将十个操作分成相对独立的两类,这样便能够开始并发处理,
- 如果一个人来处理,就是顺序处理分开的并发操作
- 如果是两个人,就是可以并行处理同一个操作
- 同理推,如果CPU只有一个,那么并发处理就是顺序执行的,而如果有多个CPU,那么并发处理就可能会并行运行

线程的启动
1.利用Thread类的子类

直到所有的线程都终止后,程序才会终止
Java程序的终止是指除守护线程(Daemon Thread)以外的线程全部在终止,守护线程是执行后台作业的线程。可以通过setDaemon方法把线程设置为守护线程
