国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java多線程編程總結(jié)一:多線程基本概念

2019-11-14 15:34:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

java多線程編程總結(jié)一 – 初識(shí)多線程

進(jìn)程、多進(jìn)程、線程、多線程的概念

進(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)行單元我們稱之為多線程。

第一個(gè)多線程程序

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),我們稱為生命周期:初始狀態(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)。

總結(jié)

一個(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í)


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 隆回县| 万山特区| 九龙县| 漯河市| 石楼县| 台南市| 信丰县| 栖霞市| 江安县| 蓝山县| 樟树市| 东城区| 马龙县| 天台县| 松江区| 保定市| 神池县| 望奎县| 隆德县| 舞阳县| 台南县| 确山县| 富蕴县| 佛山市| 越西县| 波密县| 察雅县| 通江县| 桃源县| 历史| 凌云县| 铜鼓县| 兴安盟| 贡觉县| 兴城市| 张家口市| 永仁县| 海原县| 涡阳县| 康定县| 沭阳县|