java多線程編程總結(jié)一 – 初識(shí)多線程
進(jìn)程(PRocess):CPU的執(zhí)行路徑。通俗的說(shuō)就是系統(tǒng)中正在運(yùn)行的程序。比如我們打開了瀏覽器、QQ等等,這些程序一旦被打開運(yùn)行了,就是所謂的進(jìn)程。
多進(jìn)程:系統(tǒng)中同時(shí)運(yùn)行的多個(gè)程序。這個(gè)我們應(yīng)該不難理解了,在打開瀏覽器的同時(shí)我們也可以QQ聊天、CS單機(jī)游戲等。
線程(thread):運(yùn)行在進(jìn)程中的運(yùn)行單元。比如迅雷下載中我們的某一個(gè)下載任務(wù)就是一個(gè)線程。
多線程:同理可知,每個(gè)進(jìn)程里面有多個(gè)獨(dú)立的或者相互有協(xié)作關(guān)系的運(yùn)行單元我們稱之為多線程。
Java中多線程的實(shí)現(xiàn)方式有兩種:繼承Thread父類、實(shí)現(xiàn)Runnable接口。
首先我們實(shí)現(xiàn)一個(gè)簡(jiǎn)單的多線程的實(shí)現(xiàn),交替執(zhí)行程序并輸出1~20。
1 package MyJavaThread; 2 3 public class MyFirstThreadTest { 4 5 public static void main(String[] args) { 6 new Thread(new Runnable() { 7 public void run() { 8 int i=1; 9 while (i<=20) {10 System.out.println(Thread.currentThread().getName() + ": " + i++);11 }12 }13 }).start();14 15 int i=20;16 while (i>0) {17 System.out.println(Thread.currentThread().getName() + ": " + i--);18 }19 }20 }
部分截圖如下

我們知道,CPU在同一時(shí)刻只能給一個(gè)程序分配資源(單核情況下),也就是賦予一個(gè)程序運(yùn)行權(quán)力,那么我們看到一次能運(yùn)行好幾個(gè)程序其實(shí)是CPU來(lái)回切換執(zhí)行權(quán)產(chǎn)生的效果。因而讓人們覺得是并發(fā)運(yùn)行的,只是CPU切換的速度非常快罷了。
線程有自己的狀態(tài),我們稱為生命周期:初始狀態(tài)、運(yùn)行狀態(tài)、凍結(jié)狀態(tài)和終止?fàn)顟B(tài)。
線程的朝陽(yáng)--初始化狀態(tài)
線程的初始化就是我們所說(shuō)的創(chuàng)建了一個(gè)線程,也就是實(shí)例化了一個(gè)Thread的子類,等著被start。
線程的青春--運(yùn)行狀態(tài)
當(dāng)我們調(diào)用了start方法的時(shí)候,此時(shí)線程就處于了運(yùn)行狀態(tài)。但是嚴(yán)謹(jǐn)?shù)恼f(shuō),此時(shí)線程不一定就會(huì)馬上運(yùn)行,它處于一個(gè)臨時(shí)狀態(tài),即在CPU的執(zhí)行隊(duì)列當(dāng)中,等待CPU輪回進(jìn)行執(zhí)行,獲取執(zhí)行權(quán)。
線程的感冒--凍結(jié)狀態(tài)
線程被調(diào)用了sleep方法或者調(diào)用了wait方法之后,放棄了CPU的執(zhí)行權(quán)。但是凍結(jié)之后也可以再次回到運(yùn)行狀態(tài),重新獲取CPU的執(zhí)行權(quán)。當(dāng)然也可以在中斷或出現(xiàn)異常的時(shí)候直接到死亡狀態(tài)。
線程的落幕—死亡狀態(tài)
如果線程出現(xiàn)了致命的異常或者線程的執(zhí)行邏輯完畢,這就意味著線程要謝幕say byebye了。死亡后的線程不能再次回到任何一個(gè)狀態(tài)。
一個(gè)進(jìn)程至少有一個(gè)線程在運(yùn)行
Main函數(shù)本身就是一個(gè)線程,我們稱之為主線程
實(shí)現(xiàn)多線程的方式是可以繼承Thread類,也可以實(shí)現(xiàn)Runnable接口
沒有嚴(yán)格意義上的并發(fā)
JVM自身有很多后臺(tái)線程在運(yùn)行,支撐著我們的程序
初始化狀態(tài)只能到運(yùn)行狀態(tài)
運(yùn)行狀態(tài)能到凍結(jié)狀態(tài)和死亡狀態(tài)
凍結(jié)狀態(tài)能到運(yùn)行狀態(tài)和死亡狀態(tài)
死亡狀態(tài)只能接受死亡的事實(shí)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注