大纲:
- 线程的定义、开启、状态、结束
- 线程的类型与优先级:Runnable与Callable
- 线程的竞争
- 线程的协作
1.1 线程基本流程(定义 开启 结束)
1)实现Runnable接口->重写run方法
2)创建一个Ruannable对象
3)创建一个Thread对象thread
4)thread.start()
1.2 线程的状态
状态 | 改变状态的代码 |
---|---|
new (新创建) | 线程被创建时的状态 |
Ruannable(可运行) | Thread.start() |
Running(执行) | Ruannable.run() |
Blocked(被阻塞) | Thread.sleep() Object.wait() |
waiting(等待) | wait() |
terminated(终止) | run方法执行完 |
1.3 线程的结束
正常结束:执行完run()方法
非正常结束:利用条件结束run()方法——interrupt状态、标志位
2.1 线程类型
无返回值为实现Runnable接口
有返回值为实现Callable接口
2.2 竞争
对共享的代码块添加synchronized关键字和使用lock类
原子操作——不被线程调度中断
2.3 协作
使用wait()和notify()