- 進程是操作系統拓撲管理的基本單位
- 線程是進程中,獨立運行的子任務
- 在多線程中, 代碼的順序 , **[不是]**線程的執行順序.
- start()和run()
- start()是啓動新線程執行方法,異步
- run()是當前線程執行方法,同步.和調用其他正常方法一樣
- Thread和Runnable
- 兩種方式在工作時性質是一樣的, 沒有本質區別
- Runable 接口
- 理解: 異步類的標識及規範
- 實現此接口,並重寫run()方法.纔是異步方法
- 需要配合Thread類,才能實現任務調度,異步執行
- Thread
- 理解: 線程調度,線程狀態
- 調度
- 啓動
- 暫停
- ......
- 狀態
- 屬性: 名稱,ID,狀態
- 實時: 是否存活,是否被打斷
- 等等
- 其他一些管理功能接口
這麼看來,Thread和Runnable是完全不同的兩個東西.Thread實現Runnable真的是多此一舉.
- 調度
- Thread類實現了Runnable接口
Thread包含Runnable接口功能,但不如Runnable靈活. 繼承Thread類,也可以實現run()方法,但單繼承侷限.public class Thread implements Runnable
- 理解: 線程調度,線程狀態
- 線程間的對象數據不共享
從JVM的角度去理解這個問題,變量的指針是存在虛擬機棧中的,而虛擬機棧是線程隔離的,每個線程,都是新的棧幀.相互隔離.
- 靜態數據可共享
靜脈常量在方法區中 , 線程直接訪問方法區, 方法區線程共享 .