一、线程和进程
进程:处于运行过程中的程序,系统进行资源分配和调度的一个独立单位。多个进程可以在单个处理器上并发执行,多个进程之间不会互相影响
(并发:同一时刻只能有一条指令执行,多个进程指令被快速轮换执行,宏观具有多个进程同时执行的效果)
线程:轻量级进程,在程序中是独立的、并发的执行流。可以拥有自己的堆栈、程序计数器、局部变量,不拥有资源,与其他共享资源。
抢占式执行
一个线程可以创建和撤销另一个线程
一个进程可以拥有多个线程,但是一个线程只能有一个父进程
二、线程创建和启动
1.继承Thread类创建线程类
1)定义Thread类的子类,实现run方法
2)创建子类对象
3)运行子类对象的start方法
2.实现Runnable接口创建线程类
1)定义Runnable接口实现类的实现类,重写run方法
2)创建Runnable实现类的实例,以此作为Thread的target来创建Thread对象
二、线程生命周期
1)New
创建线程,JVM为其分配内存,初始化其成员变量
2)Runnable
start方法后,JVM为其创建方法调用栈和程序计数器
3)Running
Runnable状态获得了CPU,开始执行run方法的执行体,一个CPU只能运行一个线程
4)Blocked
调用sleep方法
调用了一个阻塞式IO方法
试图获得同步监视器
等待某个notify
调用suspend方法挂起
5)Dead
run执行完毕
抛出一个未捕获的Exception或Error
stop方法调用