大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java多線程基礎開發詳細教程

Java多線程基礎開發詳細教程

更新時間:2019-09-05 09:48:31 來源:動力節點 瀏覽3484次

java中的多線程是一個同時執行多個線程的過程。

  線程基本上是一個輕量級的子進程,是最小的處理單元。多處理和多線程,都用于實現多任務處理。

  但是我們使用多線程而不是多處理,因為線程共享一個公共內存區域。它們不分配單獨的內存區域,因此節省了內存,并且線程之間的上下文切換花費的時間少于進程。

  Java多線程主要用于游戲,動畫等

  Java多線程的優點

  1)它不會阻止用戶,因為線程是獨立的,您可以同時執行多個操作。

  2)您可以一起執行許多操作,因此可以節省時間。

  3)線程是獨立的,如果單線程中發生異常,它不會影響其他線程。

  多任務處理

  多任務是同時執行多個任務的過程。我們使用多任務來利用CPU。多任務可以通過兩種方式實現:

  基于過程的多任務(多處理)

  基于線程的多任務(多線程)

  1)基于過程的多任務(多處理)

  每個進程在內存中都有自己的地址,即每個進程分配單獨的內存區域。

  過程是重量級的。

  過程之間的溝通成本很高。

  從一個進程切換到另一個進程需要一些時間來保存和加載寄存器,內存映射,更新列表等。

  2)基于線程的多任務(多線程)

  線程共享相同的地址空間。

  線程輕量級。

  線程之間的通信成本很低。

  什么是Java中的線程

  線程是一個輕量級的子進程,是最小的處理單元。這是一個獨立的執行路徑。

  線程是獨立的,如果在一個線程中發生異常,它不會影響其他線程。它共享一個共同的內存區域。

image.png

  線程的生命周期(線程狀態)

  一個線程可以處于五個狀態之一。根據sun的說法,javanew中線程生命周期中只有4個狀態,可運行,不可運行和終止。沒有運行狀態。

  但為了更好地理解這些線索,我們正在5個州進行解釋。

  Java中線程的生命周期由JVM控制。java線程狀態如下所示:

  • New
  • Runnable
  • Running
  • Non-Runnable(Blocked)
  • Terminated

image.png

  1)New

  如果創建Thread類的實例,但在調用start()方法之前,線程處于新狀態。

  2)Runnable

  線程在調用start()方法后處于可運行狀態,但線程調度程序沒有選擇它作為正在運行的線程。

  3)Running

  如果線程調度程序選擇了線程,線程將處于運行狀態。

  4)Non-Runnable(Blocked)

  這是線程仍然活著時的狀態,但目前沒有資格運行。

  5)Terminated

  當其run()方法退出時,線程處于終止或死態。

  如何創建線程

  有兩種方法可以創建一個線程:

  通過擴展Thread類

  通過實現Runnable接口。

  線程類:

  Thread類提供構造函數和方法來創建和執行一個線程上的操作.Thread類擴展了Object類并實現了Runnable接口。

  Thread類的常用構造函數:

  • Thread()
  • Thread(Stringname)
  • Thread(Runnabler)
  • Thread(Runnabler,Stringname)

  Thread類的常用方法:

  publicvoidrun():用于為線程執行操作。

  publicvoidstart():啟動線程的執行.JVM調用線程上的run()方法。

  publicvoidsleep(longmiliseconds):使當前正在執行的線程休眠(暫時停止執行)達指定的毫秒數。

  publicvoidjoin():等待線程死亡。

  publicvoidjoin(longmiliseconds):等待一個線程在指定的毫秒內死亡。

  publicintgetPriority():返回線程的優先級。

  publicintsetPriority(intpriority):更改線程的優先級。

  publicStringgetName():返回線程的名稱。

  publicvoidsetName(Stringname):更改線程的名稱。

  公共線程currentThread():返回當前正在執行的線程的引用。

  publicintgetId():返回線程的ID。

  publicThread.StategetState():返回線程的狀態。

  publicbooleanisAlive():測試線程是否存在。

  publicvoidyield():導致當前正在執行的線程對象暫時暫停并允許其他線程執行。

  publicvoidsuspend():用于掛起線程(depricated)。

  publicvoidresume():用于恢復掛起的線程(depricated)。

  publicvoidstop():用于停止線程(depricated)。

  publicbooleanisDaemon():測試線程是否是守護進程線程。

  publicvoidsetDaemon(booleanb):將線程標記為守護進程或用戶線程。

  publicvoidinterrupt():中斷線程。

  publicbooleanisInterrupted():測試線程是否被中斷。

  publicstaticbooleaninterrupted():測試當前線程是否被中斷。

  可運行界面:

  Runnable接口應該由其實例旨在由線程執行的任何類來實現。Runnable接口只有一個名為run()的方法。

  publicvoidrun():用于為線程執行操作。

  開始一個線程:

  Thread類的start()方法用于啟動新創建的線程。它執行以下任務:

  一個新線程開始(使用新的callstack)。

  線程從New狀態移動到Runnable狀態。

  當線程有機會執行時,其目標run()方法將運行。

  1)擴展Thread類的Java線程示例

image.png

  2)通過實現Runnable接口的Java線程示例

image.png

  如果你不擴展Thread類,你的類對象不會被當作線程對象。所以你需要明確地創建Thread類object.We傳遞你的類的實現Runnable的對象,以便你的類run()方法可能會執行。

  Java中的線程調度程序

  線程schedulerinjava是決定哪個線程應該運行的JVM的一部分。

  不能保證哪個可運行的線程將被線程調度器選擇運行。

  一次只能有一個線程在單個進程中運行。

  線程調度器主要使用搶占或時間片調度來調度線程。

  搶先調度和時間分割之間的區別

  在搶先式調度下,執行最高優先級的任務,直到它進入等待狀態或死亡狀態,或者產生更高優先級的任務。在時間分割下,任務執行預定義的時間片,然后重新進入準備好的任務池。然后,調度程序根據優先級和其他因素確定下一個要執行的任務。

  java中的睡眠方法

  Thread類的sleep()方法用于在指定的時間內休眠一個線程。

  java中sleep()方法的語法

  Thread類提供了兩種睡眠線程的方法:

  publicstaticvoidsleep(longmiliseconds)throwsInterruptedException

  publicstaticvoidsleep(longmiliseconds,intnanos)throwsInterruptedException

  java中的睡眠方法示例

image.png

  正如你所知道的那樣,一次只有一個線程被執行。如果你在指定的時間睡了一個線程,線程漏斗會拾取另一個線程,如此等等。

  我們可以開始一個線程兩次嗎?

  不可以。啟動線程后,永遠不會再次啟動。如果你這樣做了,拋出一個IllegalThreadStateException異常。在這種情況下,線程將運行一次但第二次,它會拋出異常。

  讓我們通過下面的例子來理解它:

image.png

  如果我們直接調用run()方法而不是start()方法呢?

  每個線程都在單獨的調用堆棧中啟動。

  從主線程調用run()方法,run()方法會進入當前調用堆棧而不是新調用堆棧的開始處。

image.png

  問題是如果你直接調用run()方法

image.png

  正如你在上面的程序中看到的那樣,沒有上下文切換,因為在這里t1和t2將被視為普通對象而不是線程對象。

  以上就是動力節點Java培訓機構小編介紹的“Java多線程基礎開發詳細教程”的內容,希望能夠幫助到大家,更多Java資訊最新內容請繼續關注動力節點Java培訓機構官網,每天會有精彩內容分享與你。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 啪啪免费网站入口链接 | 亚洲国产日韩a在线亚洲 | 二级毛片免费观看全程 | 青草成人 | 亚洲一区二区三区日本久久九 | 在线精品国精品国产不卡 | 亚洲国产欧美日韩一区二区 | 日本免费不卡在线一区二区三区 | 国产精品视频免费播放 | 午夜视频在线观看国产www | 国产亚洲欧美另类久久久 | 狠狠做狠狠做综合日日 | 欧美交换乱理伦片在线观看 | 欧美成人片在线 | 色综合色狠狠天天综合色hd | 天天天天操 | 伊人天伊人天天网综合视频 | 毛片免费观看久久欧美 | 亚洲国产系列久久精品99人人 | 久久综合久久精品 | 亚洲国产欧美精品一区二区三区 | 青青影院在线观看 | 2021久久伊人精品中文字幕有 | 中文字幕国产在线观看 | 欧美伦禁片在线播放 | 青青青爽线在线视频观看 | 久久精品成人免费网站 | 99热这里只有精品18 | 狠狠色噜噜狠狠狠狠 | 成人国产一区二区三区精品 | 亚洲精品久久久久久动漫剧情 | 久久9966精品国产免费 | 婷婷99精品国产97久久综合 | 成人亚洲精品7777 | 五月天婷亚洲 | 青青福利视频 | 欧美日韩一区二区高清免费视频 | 亚洲成a人v大片在线观看 | 四虎视频在线 | www一级毛片| 农村苗族一级特黄a大片 |