進(jìn)程:
一個應(yīng)用程序打開后,會被加載到內(nèi)存中懦铺,而計(jì)算機(jī)會開辟內(nèi)存空間捉貌,而一個內(nèi)存空間就是一個進(jìn)程,進(jìn)程是一個個獨(dú)立的單元冬念,在內(nèi)存中會不影響趁窃。
線程:
一個應(yīng)用程序是由很多代碼組成,這些代碼在當(dāng)前的進(jìn)程中要執(zhí)行急前,程序運(yùn)行時醒陆,線程中要劃分多個區(qū)域,代碼要在這些區(qū)域中執(zhí)行裆针,而負(fù)責(zé)這些功能的那些單獨(dú)執(zhí)行空間就是線程统求。
cpu執(zhí)行程序:
cpu是電腦的大腦,所有數(shù)據(jù)都要經(jīng)過它的處理据块,他處理數(shù)據(jù)是以時間碎片的形式在程序之間來回切換码邻。
class Test extends Thread {
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("run" + i);
}
}
}
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t = new Test();
t.start();
for (int i = 0; i < 20; i++) {
System.out.println("main" + i);
}
System.out.println("main is over");
}
}
此處是線程定義的一種方式,通過api幫助文檔我們得知另假,第一步定義一個新的類繼承Thread類像屋,第二步重寫run方法,將需要開辟的代碼寫在里邊边篮,第三步調(diào)用start方法己莺。
有人可能要問,你直接調(diào)用run方法就是戈轿,為什么要調(diào)用start方法凌受?
那是因?yàn)椋阒苯诱{(diào)用run方法時思杯,它和main方法一樣會進(jìn)棧胜蛉,共同在一個主線程,會先執(zhí)行run方法色乾,再執(zhí)行下面的代碼誊册。用star方法,java會在棧中開辟一個新的線程暖璧。