一、線程和進(jìn)程的關(guān)系
????????進(jìn)程——是指一個內(nèi)存中運行的應(yīng)用程序必盖,每個進(jìn)程都有一個獨立的內(nèi)存空間拌牲,一個應(yīng)用程序可以同時運行多個進(jìn)程;進(jìn)程也是程序的一次執(zhí)行過程歌粥,是系統(tǒng)運行程序的基本單位塌忽;系統(tǒng)運行一個程序即是一個進(jìn)程從創(chuàng)建、運行到消亡的過程失驶。
? ??????線程——是進(jìn)程中的一個執(zhí)行單元土居,負(fù)責(zé)當(dāng)前進(jìn)程中程序的執(zhí)行,一個進(jìn)程中至少有一個線程。一個進(jìn)程中是可以有多個線程的擦耀,這個應(yīng)用程序也可以稱之為多線程程序棉圈。
1、線程調(diào)度的方式:
1眷蜓、分時調(diào)度 —— 所有線程輪流使用CPU的使用權(quán)迄损,平均分配每個線程占用CPU的時間
2、搶占式調(diào)度 —— 優(yōu)先級高的線程優(yōu)先使用CPU账磺,優(yōu)先級相同隨機選擇芹敌,java使用的是搶占式調(diào)度
2、創(chuàng)建線程類
一垮抗、通過繼承Thread類來創(chuàng)建新線程
1. 定義Thread類的子類氏捞,并重寫該類的run()方法,該run()方法的方法體就代表了線程需要完成的任務(wù),因此把run()方法稱為線程執(zhí)行體冒版。
2. 創(chuàng)建Thread子類的實例液茎,即創(chuàng)建了線程對象
3. 調(diào)用線程對象的start()方法來啟動該線程
例如:
```
public class MyThread extends Thread {
//定義指定線程名稱的構(gòu)造方法
public MyThread(String name) {
//調(diào)用父類的String參數(shù)的構(gòu)造方法,指定線程的名稱
super(name);
}
/**
* 重寫run方法辞嗡,完成該線程執(zhí)行的邏輯
*/
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(getName()+":正在執(zhí)行捆等!"+i);
}
}
}
```
二、通過實現(xiàn)Runnable接口來創(chuàng)建