多執行緒------執行緒與程式/執行緒排程/建立執行緒
執行緒與程式
-
程式:是指一個記憶體中執行的應用程式,每個程式都有一個獨立的記憶體空間,一個應用程式可以同時執行多個程式;程式也是程式的一次執行過程,是系統執行程式的基本單位;系統執行一個程式即是一個程式從建立、執行到消亡的過程。
-
執行緒:執行緒是程式中的一個執行單元,負責當前程式中程式的執行,一個程式中至少有一個執行緒。一個程式中是可以有多個執行緒的,這個應用程式也可以稱之為多執行緒程式。
簡而言之:一個程式執行後至少有一個程式,一個程式中可以包含多個執行緒
執行緒排程
-
分時排程
所有執行緒輪流使用 CPU 的使用權,平均分配每個執行緒佔用 CPU 的時間。
-
搶佔式排程
優先讓優先順序高的執行緒使用 CPU,如果執行緒的優先順序相同,那麼會隨機選擇一個(執行緒隨機性),Java使用的為搶佔式排程。
-
設定執行緒的優先順序
-
搶佔式排程詳解
大部分作業系統都支援多程式併發執行,現在的作業系統幾乎都支援同時執行多個程式。比如:現在我們上課一邊使用編輯器,一邊使用錄屏軟體,同時還開著畫圖板,dos視窗等軟體。此時,這些程式是在同時執行,”感覺這些軟體好像在同一時刻執行著“。
實際上,CPU(中央處理器)使用搶佔式排程模式在多個執行緒間進行著高速的切換。對於CPU的一個核而言,某個時刻,只能執行一個執行緒,而 CPU的在多個執行緒間切換速度相對我們的感覺要快,看上去就是在同一時刻執行。
其實,多執行緒程式並不能提高程式的執行速度,但能夠提高程式執行效率,讓CPU的使用率更高。
-
建立執行緒類
簡述:
- Java使用
java.lang.Thread
類代表執行緒, - 所有的執行緒物件都必須是Thread類或其子類的例項。
- 每個執行緒的作用是完成一定的任務,實際上就是執行一段程式流即一段順序執行的程式碼。Java使用執行緒執行體來代表這段程式流。
建立、啟動多執行緒的步驟(繼承Thread類方式):
步驟:
- 定義Thread類的子類,並重寫該類的run()方法,該run()方法的方法體就代表了執行緒需要完成的任務,因此把run()方法稱為執行緒執行體。
- 建立Thread子類的例項,即建立了執行緒物件
- 呼叫執行緒物件的start()方法來啟動該執行緒
程式碼測試:
- 自定義執行緒類:
public class MyThread extends Thread {
//定義指定執行緒名稱的構造方法
public MyThread(String name) {
//呼叫父類的String引數的構造方法,指定執行緒的名稱
super(name);
}
/**
* 重寫run方法,完成該執行緒執行的邏輯
*/
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(getName()+":正在執行!"+i);
}
}
}
- 測試:
public class Demo01 {
public static void main(String[] args) {
//建立自定義執行緒物件
MyThread mt = new MyThread("新的執行緒!");
//開啟新執行緒
mt.start();
//在主方法中執行for迴圈
for (int i = 0; i < 10; i++) {
System.out.println("main執行緒!"+i);
}
}
}
相關文章
- 執行緒與多執行緒執行緒
- 執行緒池建立執行緒的過程執行緒
- 多執行緒--執行緒管理執行緒
- 多執行緒【執行緒池】執行緒
- 【多執行緒總結(二)-執行緒安全與執行緒同步】執行緒
- Java多執行緒學習(1)建立執行緒與執行緒的生命週期Java執行緒
- Java多執行緒-執行緒中止Java執行緒
- 多執行緒之初識執行緒執行緒
- 執行緒、執行緒與程式、ULT與KLT執行緒
- 多執行緒和多執行緒同步執行緒
- Java多執行緒學習(3)執行緒同步與執行緒通訊Java執行緒
- 多執行緒,執行緒類三種方式,執行緒排程,執行緒同步,死鎖,執行緒間的通訊,阻塞佇列,wait和sleep區別?執行緒佇列AI
- Python——程式、執行緒、協程、多程式、多執行緒(個人向)Python執行緒
- Android程式框架:執行緒與執行緒池Android框架執行緒
- 多執行緒系列之 執行緒安全執行緒
- iOS 多執行緒之執行緒安全iOS執行緒
- Java多執行緒之執行緒中止Java執行緒
- Android多執行緒之執行緒池Android執行緒
- Java多執行緒-執行緒狀態Java執行緒
- Java多執行緒-執行緒通訊Java執行緒
- kuangshenshuo-多執行緒-執行緒池執行緒
- java 多執行緒守護執行緒Java執行緒
- Java多執行緒(2)執行緒鎖Java執行緒
- 多執行緒之手撕執行緒池執行緒
- java多執行緒9:執行緒池Java執行緒
- 【java多執行緒】(二)執行緒停止Java執行緒
- [短文速讀 -5] 多執行緒程式設計引子:程式、執行緒、執行緒安全執行緒程式設計
- 執行緒以及多執行緒,多程式的選擇執行緒
- 認識執行緒、建立執行緒寫法執行緒
- 執行緒和執行緒池執行緒
- 執行緒 執行緒池 Task執行緒
- 執行緒(一)——執行緒,執行緒池,Task概念+程式碼實踐執行緒
- 多執行緒(五)---執行緒的Yield方法執行緒
- 【Java多執行緒】執行緒安全的集合Java執行緒
- C#多執行緒(6):執行緒通知C#執行緒
- 【Java】【多執行緒】執行緒池簡述Java執行緒
- Java多執行緒-執行緒池的使用Java執行緒
- 程式執行緒篇——程式執行緒基礎執行緒