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

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

Java基礎學習:java多線程視頻

更新時間:2020-04-01 14:16:30 來源:動力節點 瀏覽2636次

什么是線程?

  線程是輕量級進程(process)。 任何進程(process)都可以在其中運行多個線程。

  例如,在Web瀏覽器中,我們可以有一個線程將加載用戶界面,而我們可以有另一個線程實際上將檢索需要在用戶界面中顯示的所有數據。

  什么是多線程

  多線程使我們能夠同時運行多個線程。

  例如,在Web瀏覽器中,我們可以有一個處理用戶界面的線程,同時,我們可以有另一個線程來獲取要顯示的數據。

  因此,多線程改善了系統的響應能力。

  什么是并發

  線程上下文中的并發性使我們可以同時運行多個線程。

  但是線程真的在同時運行嗎?

  單核系統

  JVM提供的線程調度程序(Thread Scheduler)決定在任何給定時間運行哪個線程。 調度程序給每個線程一段非常小的時間運行。

  因此,在任何給定時間,我們只有一個在處理器中實際運行的線程。 但是由于切換時間間隔非常小,我們感覺到多個線程正在同時運行。

  多核系統

  即使在多核系統中,也要使用線程調度程序。 但是,由于我們有多個內核,因此實際上我們可以在相同時間運行多個線程。

  例如,如果我們有一個雙核系統,那么我們可以有兩個線程同時運行。 第一個線程將在第一個內核中運行,第二個線程將在第二個內核中運行。

  為什么需要多線程?

  多線程使我們能夠改善系統的響應能力。

  例如,在Web瀏覽器中,如果所有內容都在單個Thread中運行,則每當獲取數據以進行顯示時,系統將完全不響應。 如果需要10秒鐘來獲取數據,那么在那10秒鐘內,我們將無法在網絡瀏覽器中執行任何其他操作,例如打開新標簽頁,甚至關閉瀏覽器。

  因此,在不同線程中同時運行程序的不同部分有助于提高系統的響應能力。

  如何用Java編寫多線程程序

  我們可以使用以下方法在Java中創建線程

  繼承Thread類

  實施Runnable接口

  實施Callable接口

  通過Executor框架與Runnable和Callable任務一起使用

  我將在下期穩重中介紹Callables和Executor框架。 在本文中,我將主要集中于繼承Thread類和實現Runnable接口。

  繼承Thread類

  為了創建可以在Thread中運行的代碼,我們創建一個類,然后繼承Thread類。 任務代碼需要放在run()函數中。 在下面的代碼中,您可以看到Worker是擴展Thread Class的類,并且在run()函數內部完成了打印數字0至5的任務。

Java基礎學習:java多線程視頻

  在上面的代碼中,Thread.currentThread().getName()用于獲取運行代碼的當前線程的名稱。

  為了創建一個線程,我們只需要創建一個Worker類的實例。 然后,我們可以使用start()函數啟動線程。

Java基礎學習:java多線程視頻

  在上述代碼中,我們從Worker類創建3個線程t1,t2和t3。

  然后,我們使用start()方法啟動線程。

  下圖是通過擴展Thread類創建線程的全部代碼。

Java基礎學習:java多線程視頻

  這是我們通過運行上面的代碼獲得的輸出

Java基礎學習:java多線程視頻

  可以看出,所有3個線程都已打印從0到5的數字。

  從輸出中可以清楚地看到3個線程沒有按任何特定順序運行。

  實現Runnable接口

  為了創建可以在線程中運行的代碼,我們創建一個類,然后實現Runnable接口。 由這段代碼完成的任務需要放在run()函數中。 在下面的代碼中,您可以看到RunnableWorker是實現Runnable接口的類,并且打印數字0到4的任務是在run()函數中完成的。

Java基礎學習:java多線程視頻

  為了創建線程,首先我們需要創建一個RunnableWorker對象,該對象實現Runnable接口。

  然后,我們可以通過創建Thread類的對象并將RunnableWorker的對象作為參數傳遞來創建新線程。 如下面的代碼所示。

Java基礎學習:java多線程視頻

  上面的代碼創建了一個Runnable對象r。 然后,它創建3個線程t1,t2和t3,并將r作為參數傳遞給3個線程。 然后使用start()函數啟動所有3個線程。

  下圖為通過實現Runnable接口創建線程的完整代碼

Java基礎學習:java多線程視頻

  在運行上述代碼時,我們將獲得以下輸出。 每次運行代碼時,輸出順序都會改變。

Java基礎學習:java多線程視頻

  與繼承Thread類相比,實現Runnable接口是更好的選擇,因為我們只能繼承一個類,但是我們可以在java中實現多個接口。

  Java 8中的Runnable接口

  在Java 8中,由于Runnable接口只有一個方法run(),因此它成為FunctionalInterface(函數式接口)。

  以下代碼顯示了我們如何在Java 8中創建可運行實例,并且使用了Lambda。

Java基礎學習:java多線程視頻

  在這里,無需創建類然后實現Runnable接口,我們可以直接使用lambda表達式創建Runnable實例,如下所示

Java基礎學習:java多線程視頻

  以上就是動力節點java培訓機構的小編針對“Java基礎學習:java多線程視頻”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产在线综合网 | 国产成人精品在线 | 久久99精品久久久久久秒播放器 | 91精品国产综合久久欧美 | 精品久久九九 | 97久久人人爽人人爽人人 | 四虎在线永久免费视频网站 | 操天天操| 欧美日韩在线成人免费 | 操美女穴 | 欧美一级一毛片 | 99这里只有精品6 | 国产亚洲精 | 日韩性网站 | 日一区二区三区 | 日韩 欧美 亚洲 | 成年看片永远免费 | 狠狠色噜噜狠狠狠狠97 | 久久婷婷国产麻豆91天堂 | 久久精品三级视频 | 国内精品久久久久久久星辰影视 | 欧美日韩精品国产一区二区 | 婷婷激情视频 | 亚洲欧美另类久久久精品能播放的 | 黄色录像网址 | 国产欧美久久久另类精品 | 五月婷婷六月综合 | 级毛片久久久毛片精品毛片 | 韩毛片 | 久久久精品久久久久久久久久久 | 一区二区国产在线观看 | 久久精品中文字幕有码日本 | 免费观看欧美一级毛片 | 亚洲国产精品免费视频 | 国产www网站 | 国产欧美一区二区精品性色99 | 91久久香蕉国产线看 | 在线观看视频一区 | 国产亚洲情侣久久精品 | 麻豆日韩区久久综合 | 亚州毛色毛片免费观看 |