1、線程和進程的概念java
如今的操做系統是多任務操做系統。多線程是實現多任務的一種方式。多線程
進程是程序的一個動態執行過程,是指一個內存中運行的應用程序,每一個進程都有本身獨立的一塊內存空間,一個進程中能夠啓動多個線程。好比在 Windows系統中,一個運行的exe就是一個進程。線程是指進程中的一個執行流程,一個進程中能夠運行多個線程。好比java.exe進程中能夠運行 不少線程。線程老是屬於某個進程,進程中的多個線程共享進程的內存。「同時」執行是人的感受,在線程之間實際上輪換執行。函數
2、Java中線程的實現操作系統
在Java中藥想實現多線程有兩種手段,一種是集成Thread類,另外一種就是實現Runnable接口。下面看繼承自Thread類線程的建立原理:線程
首先定義一個線程類 該類必須繼承自Thread類,同時必須明確的覆寫run()方法code
如:對象
1 |
class MyThread extends Thread{ |
3 |
public void run(){ //覆寫Thread類中的run方法此方法是線程中 |
而後定義一個主類,實例化線程類的對象,發動啓動線程的命令繼承
如:接口
01 |
public class ThreadText{ |
03 |
public stataic void main(String args[]){ |
05 |
MyThread m1= new MyThread(); //實例化對象 |
實現Runnable接口:進程
首先定義一個線程類繼承自Runnable接口
如:
1 |
class MyThread implements Runnable{ |
3 |
public void run(){ //覆寫Runnable接口中的run方法 |
而後定義一個主類,實例化線程類的對象,發動啓動線程的命令
如:
01 |
public class ThreadText{ |
03 |
public stataic void main(String args[]){ |
05 |
MyThread m1= new MyThread(); //實例化Runnable子類對象 |
07 |
Thread t1= new Thread(m1); //實例化Thread類對象 |
3、線程的幾種狀態
在Java當中,線程一般都有五種狀態,建立、就緒、運行、阻塞和死亡。
第一是建立狀態。在生成線程對象,並無調用該對象的start方法,這是線程處於建立狀態。
第二是就緒狀態。當調用了線程對象的start方法以後,該線程就進入了就緒狀態,可是此時線程調度程序尚未把該線程設置爲當前線程,此時處於就緒狀態。在線程運行以後,從等待或者睡眠中回來以後,也會處於就緒狀態。
第三是運行狀態。線程調度程序將處於就緒狀態的線程設置爲當前線程,此時線程就進入了運行狀態,開始運行run函數當中的代碼。
第四是阻塞狀態。線程正在運行的時候,被暫停,一般是爲了等待某個時間的發生(好比說某項資源就緒)以後再繼續運行。sleep,suspend,wait等方法均可以致使線程阻塞。
第五是死亡狀態。若是一個線程的run方法執行結束或者調用stop方法後,該線程就會死亡。對於已經死亡的線程,沒法再使用start方法令其進入就緒。