Java中多線程原理詳解
一、線程和進程的概念
現在的操作系統是多任務操作系統。多線程是實現多任務的一種方式。
進程是程序的一個動態執行過程,是指一個內存中運行的應用程序,每個進程都有自己獨立的一塊內存空間,一個進程中可以啟動多個線程。比如在Windows系統中,一個運行的exe就是一個進程。線程是指進程中的一個執行流程,一個進程中可以運行多個線程。比如java.exe進程中可以運行很多線程。線程總是屬于某個進程,進程中的多個線程共享進程的內存。“同時”執行是人的感覺,在線程之間實際上輪換執行。
二、Java中線程的實現
在Java中藥想實現多線程有兩種手段,一種是集成Thread類,另一種就是實現Runnable接口。下面看繼承自Thread類線程的創建原理:
首先定義一個線程類 該類必須繼承自Thread類,同時必須明確的覆寫run()方法
如:
class MyThread extends Thread{public void run(){ //覆寫Thread類中的run方法此方法是線程中線程主體; 的主體}
然后定義一個主類,實例化線程類的對象,發動啟動線程的命令
如:
public class ThreadText{public stataic void main(String args[]){MyThread m1=new MyThread();//實例化對象m1.start();//啟動多線程}};
實現Runnable接口:
首先定義一個線程類繼承自Runnable接口
如:
class MyThread implements Runnable{public void run(){ //覆寫Runnable接口中的run方法線程主體;}
然后定義一個主類,實例化線程類的對象,發動啟動線程的命令
如:
public class ThreadText{public stataic void main(String args[]){MyThread m1=new MyThread();//實例化Runnable子類對象Thread t1=new Thread(m1);//實例化Thread類對象t1.start();//啟動多線程}};
三、線程的幾種狀態
在Java當中,線程通常都有五種狀態,創建、就緒、運行、阻塞和死亡。
第一是創建狀態。在生成線程對象,并沒有調用該對象的start方法,這是線程處于創建狀態。
第二是就緒狀態。當調用了線程對象的start方法之后,該線程就進入了就緒狀態,但是此時線程調度程序還沒有把該線程設置為當前線程,此時處于就緒狀態。在線程運行之后,從等待或者睡眠中回來之后,也會處于就緒狀態。
第三是運行狀態。線程調度程序將處于就緒狀態的線程設置為當前線程,此時線程就進入了運行狀態,開始運行run函數當中的代碼。
第四是阻塞狀態。線程正在運行的時候,被暫停,通常是為了等待某個時間的發生(比如說某項資源就緒)之后再繼續運行。sleep,suspend,wait等方法都可以導致線程阻塞。
第五是死亡狀態。如果一個線程的run方法執行結束或者調用stop方法后,該線程就會死亡。對于已經死亡的線程,無法再使用start方法令其進入就緒。
相關文章: