@(博客文章)[java]java
(1)一個線程是一個程序內部的順序控制流。多線程
(2)線程和進程
–每一個進程都有獨立的代碼和數據空間(進程上下文),進程切換的開銷大。操作系統
–線程:輕量的進程,同一類線程共享代碼和數據空間,每一個線程有獨立的運行棧和程序計數器(PC),線程切換的開銷小。線程
–多進程:在操做系統中,能同時運行多個任務(程序)。對象
–多線程:在同一應用程序中,有多個順序流同時執行。繼承
JAVA的線程是經過java.lang.Thread類來實現的。接口
VM啓動時會有一個由main()方法所定義的線程。進程
能夠經過建立Thread的實例來建立新的線程。博客
每一個線程都是經過某個特定Thread對象所對應的方法run()來完成其操做的,方法run()稱爲線程體。table
經過調用Thread類的start()方法來啓動一個線程。
(1)繼承Thread類
(2)實現Runnable接口
建議使用第二種方式,即實現Runnable接口。
狀態名稱 | 說明 |
---|---|
NEW | 初始狀態,線程被構建,但尚未調用start()方法。 |
RUNNABLE | 運行狀態,Java線程將操做系統中的就緒和運行兩種狀態統一稱爲RANNABLE |
BLOCK | 阻塞狀態,表示線程阻塞於鎖 |
WAITING | 等待狀態,表示當前線程須要等待其它線程作出一些待定動做(通知或中斷) |
TIME_WAITING | 超時等待狀態,相似於WAITING,但能夠在指定時間後自行返回 |
TERMINATED | 終止狀態,表示當前線程已經執行完畢 |