大綱:
- 線程的定義、開啟、狀態、結束
- 線程的類型與優先級: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類
競爭
原子操作——不被線程調度中斷
Paste_Image.png
2.3 協作
使用wait()和notify()