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

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

多線程總結(jié)知識點

2019-11-14 15:40:37
字體:
供稿:網(wǎng)友

多線程:
 * 計算機程序執(zhí)行原理
 * CPU(寄存器,控制器,運算器),內(nèi)存,硬盤,光盤
 * 程序,進程,線程
 * 程序:就是指我們寫的保存在硬盤當中的靜態(tài)文件叫程序
 * 進程:程序被加載進內(nèi)存,準備或者正在運行的,就叫進程
 * 線程:就是程序中不同的執(zhí)行路徑
 *
 * 進程:只要程序加載了,就會在操作系統(tǒng)注冊一個進程號(PID)
 *   
 *   程序代碼,在沒有被調(diào)用之前,都是以靜態(tài)文件方式保存在硬盤中的,我們調(diào)用的時候,就會從硬盤載入到內(nèi)存中
 *      這個時候就認為開啟了一個進程
 *      進程是一個操作系統(tǒng)的概念
 *
 *  線程:當我們程序開始執(zhí)行的時候,就是java中main()開始執(zhí)行,在棧內(nèi)存開辟main()棧幀的時候,就是開啟了一個線程
 *   一個線程就是里面的一個棧和鏈式棧幀,一個棧幀就對應(yīng)一個方法
 *   cpu時間片:Ghz:一秒鐘一億次,把5次執(zhí)行的時間當成一個基本單位,這5次執(zhí)行的時間就是一個時間片
 *   然后,給每個進程不同的時間執(zhí)行,也許相同哦,誰來決定是操作系統(tǒng)決定的
 *   操作系統(tǒng)靠什么來決定:靠的是寫程序的時候,給進程指定的程序優(yōu)先級
 *   為什么有多線程?
 *   人的需求,可以多線程解決
 *   因為有多核CPU,需要提高程序的執(zhí)行效率
 *
 *   一切皆對象,那就是一切皆類

 /**
 * 創(chuàng)建線程的第一種方式
 *    第一步:繼承java.lang.Thread;
 *    第二步:重寫run(),為什么要重寫,因為run()就相當于新線程中的main(),是程序執(zhí)行的起點和終點
 *
 *    三個要點:
 *      線程的定義:程序不同執(zhí)行路徑,從代碼的角度就是一個類,從內(nèi)存的角度就是一個新的棧,也就是一個新的棧幀鏈表
 *
 *      線程必須要先啟動:start();
 *
 *      一旦開啟多線程,這個時候,說代碼是從左到右,從上到下執(zhí)行這句話就不準確了,因為,我們開啟了兩個線程,在每個線程的內(nèi)部,仍然是從上到下,從左到右,但是線程之間的代碼,沒有固定的先后順序,他們執(zhí)行的先后順序是不確定的,和cpu操作系統(tǒng)和我們的設(shè)置都有關(guān)

  *  第二種方法:
 *  創(chuàng)建了一個Thread,實現(xiàn)java.lang.runnable,并實現(xiàn)了接口的run()方法
 *  并且調(diào)用start();
 *  不過不調(diào)用run();相當于單線程
 *  啟動一個線程只能是,Thread類的start();
 *
 *  創(chuàng)建新線程有兩種方法,但是啟動只有一種方法,Thread的start();

 /** 線程的生命周期:
 *      我們的內(nèi)存分析圖,分析了一下單線程程序的生命周期,本質(zhì)是main()線程所在的棧生命周期,說白了,也就是main()生命周期
 *  非主線程的生命周期:
 *      run()本質(zhì)就是run()所在的棧的生命周期,也就run()方法的生命周期.
 *      創(chuàng)建/激活
 *      就緒
 *      運行--執(zhí)行/不執(zhí)行
 *      阻塞
 *      復活
 *      死亡
 *
 * 線程類的常用方法:
 *  setName();給線程取名字
 *      不設(shè)置的話是Thread-0,依次累加
 *  getName();獲得當前線程的名字
 *  static currentThread():獲得當前線程的內(nèi)存地址
 *  static sleep():讓當前的線程睡眠指定的毫秒數(shù)
 *
 *  setPRiority():設(shè)置線程的優(yōu)先級,
 *      java中線程的優(yōu)先級有0-10 11個級別
 *      win當中是1-7 7個優(yōu)先級
 *      Unix:2^31;
 *  MIN_PRIORITY : 1
 *  MAX_PRIORITY : 10
 *  NORM_PRIORITY : 5

     優(yōu)先級的等級默認是5級

 線程的合并:
   對象名.join();//當有join()的時候,誰調(diào)用的就先輸出誰的,相當于方法的調(diào)用,不是線程的問題了,變成了單線程問題,又按照從上往下執(zhí)行
線程的讓位:
   Thread.yield();
 *    1  這是一個靜態(tài)方法,意味著即使用對象調(diào)用他,他也會低層轉(zhuǎn)化為類名調(diào)用,聽到的也是當前類偶在的線程,也就是說在那個類中調(diào)用,就停止那個類的線程
 *    2 給同一個優(yōu)先級的線程讓位,不同優(yōu)先級的不讓位
 *    3 和sleep()方法相同,那個線程調(diào)用就停止那個類的線程,但是沒時間,不固定,只是讓出當前這個時間片,下一個時間片讓不讓另說
 *    現(xiàn)成的默認優(yōu)先級:
 *       子線程默認繼承父類的優(yōu)先級
 獲取優(yōu)先級:
 getPriority():調(diào)用這個方法,返回的是獲得的優(yōu)先級的等級數(shù)

 

先寫一些基本的知識點和方法,尤其是前面的定義對多線程的理解很有幫助,只有理解了定義,才能更深一步的了解多線程,以后總結(jié)了更多的知識會即使和大家分享,希望對大家有幫助!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东山县| 藁城市| 马公市| 南江县| 平远县| 来宾市| 孙吴县| 济宁市| 西充县| 彭水| 丹东市| 利津县| 上蔡县| 平舆县| 大石桥市| 桐城市| 禹州市| 鄢陵县| 密云县| 德令哈市| 兴海县| 太康县| 土默特左旗| 蛟河市| 蒲城县| 诏安县| 石河子市| 常州市| 章丘市| 防城港市| 北川| 灵璧县| 杨浦区| 达拉特旗| 普定县| 射阳县| 无锡市| 南宫市| 安远县| 鹤峰县| 龙门县|