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