一、什么是進(jìn)程
在復(fù)習(xí)線(xiàn)程之前,小編先給大家說(shuō)一下進(jìn)程的概念。
所謂的進(jìn)程,就是系統(tǒng)進(jìn)行資源分配和調(diào)用的獨(dú)立單元,每一個(gè)進(jìn)程都有它獨(dú)立的內(nèi)存空間和系統(tǒng)資源。
目前的計(jì)算機(jī)系統(tǒng),可以分為單進(jìn)程和多進(jìn)程系統(tǒng),其區(qū)別如下:
·單進(jìn)程操作系統(tǒng):dos(一瞬間只能執(zhí)行一個(gè)任務(wù))
·多進(jìn)程單用戶(hù)操作系統(tǒng):Windows(一瞬間只能執(zhí)行多個(gè)任務(wù))
·多進(jìn)程多用戶(hù)操作系統(tǒng):Linux(一瞬間只能執(zhí)行多個(gè)任務(wù))
二. 什么是線(xiàn)程
然后我們?cè)賮?lái)看看什么是線(xiàn)程。
所謂的線(xiàn)程,就是進(jìn)程里面的一條執(zhí)行路徑,多個(gè)線(xiàn)程可以共享進(jìn)程里面的內(nèi)存空間和系統(tǒng)資源。一個(gè)進(jìn)程中可以有多個(gè)線(xiàn)程,各個(gè)線(xiàn)程都有不同的分工。
那么進(jìn)程和線(xiàn)程有什么關(guān)系呢?看看小編給大家的總結(jié)吧:
·進(jìn)程與進(jìn)程之間,其內(nèi)存空間和系統(tǒng)資源是獨(dú)立的;
·同一個(gè)進(jìn)程里的多個(gè)線(xiàn)程之間,其內(nèi)存空間和系統(tǒng)資源是共享的;
·一個(gè)進(jìn)程里可以有一條或一條以上的線(xiàn)程;
·如果一個(gè)進(jìn)程里只有一條線(xiàn)程,這條線(xiàn)程就叫做主線(xiàn)程;
·線(xiàn)程是在進(jìn)程里的,他們是包含與被包含的關(guān)系。
三. 創(chuàng)建線(xiàn)程的方式
那么我們?cè)撛趺磩?chuàng)建出一個(gè)線(xiàn)程呢?一般情況下,我們可以采用以下方式。
1.繼承線(xiàn)程類(lèi)
在這種方式中,我們可以創(chuàng)建一個(gè)MyThread類(lèi)繼承Thread,并重寫(xiě)run方法,代碼如下:
public class Test01 {
public static void main(String[] args) {
//創(chuàng)建線(xiàn)程的對(duì)象
MyThread t = new MyThread();
//啟動(dòng)線(xiàn)程
t.start();
}
}
//線(xiàn)程類(lèi)
class MyThread extends Thread{
//當(dāng)前線(xiàn)程搶到cpu資源后,就會(huì)執(zhí)行run方法
@Override
public void run() {
System.out.println("當(dāng)前線(xiàn)程搶到資源了");
}
}
2.實(shí)現(xiàn)Runnable接口
第二種方式就是實(shí)現(xiàn)Runnable接口。我們可以創(chuàng)建一個(gè)Task類(lèi),實(shí)現(xiàn)Runnable接口并重寫(xiě)run方法。
public class Test01 {
public static void main(String[] args) {
Thread t = new Thread(new Task());
t.start();
}
}
//任務(wù)類(lèi)
class Task implements Runnable{
//當(dāng)前線(xiàn)程搶到cpu資源后,就會(huì)執(zhí)行run方法
@Override
public void run() {
System.out.println("搶到資源了");
}
}
另外我們還可以通過(guò)實(shí)現(xiàn)Callable接口,或是利用Executors線(xiàn)程池創(chuàng)建線(xiàn)程,這兩種方式小編就不演示實(shí)現(xiàn)代碼了。
四. 總結(jié)
最后小編再給大家總結(jié)一下今天的重點(diǎn):
1.進(jìn)程與進(jìn)程的關(guān)系:進(jìn)程獨(dú)享內(nèi)存空間和系統(tǒng)資源;
2.線(xiàn)程與進(jìn)程的關(guān)系:一個(gè)進(jìn)程中至少包含一個(gè)線(xiàn)程;
3.線(xiàn)程與線(xiàn)程的關(guān)系:在同一個(gè)進(jìn)程里,多個(gè)線(xiàn)程共享內(nèi)存空間和系統(tǒng)資源;
4.一個(gè)進(jìn)程中可以包含多個(gè)線(xiàn)程,但只有一個(gè)主線(xiàn)程。