最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java多線程并發(fā)與并行和線程與進程案例

 更新時間:2022年06月15日 10:03:06   作者:??共飲一杯無????  
這篇文章主要介紹了Java多線程并發(fā)與并行和線程與進程案例,文章基于Java的相關資料展開詳細的內容介紹,具有一定的參考價價值,需要的小伙伴可以參考一下

前言:

程序在沒有跳轉語句的前提下,都是由上至下依次執(zhí)行,那現(xiàn)在想要設計一個程序,邊打游戲邊聽歌,怎么設計? 要解決上述問題,咱們得使用多進程或者多線程來解決.

一、并發(fā)與并行

  • 并發(fā):指兩個或多個事件在同一個時間段內發(fā)生。
  • 并行:指兩個或多個事件在同一時刻發(fā)生(同時發(fā)生)。

在操作系統(tǒng)中,安裝了多個程序,并發(fā)指的是在一段時間內宏觀上有多個程序同時運行,這在單 CPU 系統(tǒng)中,每一時刻只能有一道程序執(zhí)行,即微觀上這些程序是分時的交替運行,只不過是給人的感覺是同時運行,那是因為分時交替運行的時間是非常短的。 而在多個 CPU 系統(tǒng)中,則這些可以并發(fā)執(zhí)行的程序便可以分配到多個處理器上(CPU),實現(xiàn)多任務并行執(zhí)行,即利用每個處理器來處理一個可以并發(fā)執(zhí)行的程序,這樣多個程序便可以同時執(zhí)行。目前電腦市場上說的多核 CPU,便是多核處理器,核 越多,并行處理的程序越多,能大大的提高電腦運行的效率。

注意:單核處理器的計算機肯定是不能并行的處理多個任務的,只能是多個任務在單個CPU上并發(fā)運行。同理,線程也是一樣的,從宏觀角度上理解線程是并行運行的,但是從微觀角度上分析卻是串行運行的,即一個線程一個線程的去運行,當系統(tǒng)只有一個CPU時,線程會以某種順序執(zhí)行多個線程,我們把這種情況稱之為線程調度。

二、線程與進程

  • 進程:是指一個內存中運行的應用程序,每個進程都有一個獨立的內存空間,一個應用程序可以同時運行多個進程;進程也是程序的一次執(zhí)行過程,是系統(tǒng)運行程序的基本單位;系統(tǒng)運行一個程序即是一個進程從創(chuàng)建、運行到消亡的過程。
  • 線程:線程是進程中的一個執(zhí)行單元,負責當前進程中程序的執(zhí)行,一個進程中至少有一個線程。一個進程中是可以有多個線程的,這個應用程序也可以稱之為多線程程序。

簡而言之:一個程序運行后至少有一個進程,一個進程中可以包含多個線程

我們可以再電腦底部任務欄,右鍵----->打開任務管理器,可以查看當前任務的進程: 進程 

 線程 

 線程調度:

  • 分時調度:所有線程輪流使用 CPU 的使用權,平均分配每個線程占用 CPU 的時間。
  • 搶占式調度:優(yōu)先讓優(yōu)先級高的線程使用 CPU,如果線程的優(yōu)先級相同,那么會隨機選擇一個(線程隨機性),Java使用的為搶占式調度。
  • 設置線程的優(yōu)先級

搶占式調度詳解:

大部分操作系統(tǒng)都支持多進程并發(fā)運行,現(xiàn)在的操作系統(tǒng)幾乎都支持同時運行多個程序。比如:現(xiàn)在我們上課一邊使用編輯器,一邊使用錄屏軟件,同時還開著畫圖板,dos窗口等軟件。此時,這些程序是在同時運行,”感覺這些軟件好像在同一時刻運行著“。 實際上,CPU(中央處理器)使用搶占式調度模式在多個線程間進行著高速的切換。對于CPU的一個核而言,某個時刻,只能執(zhí)行一個線程,而 CPU的在多個線程間切換速度相對我們的感覺要快,看上去就是在同一時刻運行。 其實,多線程程序并不能提高程序的運行速度,但能夠提高程序運行效率,讓CPU的使用率更高。 

三、創(chuàng)建線程類

Java使用java.lang.Thread類代表線程,所有的線程對象都必須是Thread類或其子類的實例。每個線程的作用是完成一定的任務,實際上就是執(zhí)行一段程序流即一段順序執(zhí)行的代碼。Java使用線程執(zhí)行體來代表這段程序流。Java中通過繼承Thread類來創(chuàng)建啟動多線程的步驟如下:

  • 定義Thread類的子類,并重寫該類的run()方法,該run()方法的方法體就代表了線程需要完成的任務,因此把run()方法稱為線程執(zhí)行體。
  • 創(chuàng)建Thread子類的實例,即創(chuàng)建了線程對象
  • 調用線程對象的start()方法來啟動該線程

代碼如下: 測試類:

public class Demo01 {
	public static void main(String[] args) {
		//創(chuàng)建自定義線程對象
		MyThread mt = new MyThread("新的線程!");
		//開啟新線程
		mt.start();
		//在主方法中執(zhí)行for循環(huán)
		for (int i = 0; i < 10; i++) {
			System.out.println("main線程!"+i);
		}
	}
}

自定義線程類:

public class MyThread extends Thread {
	//定義指定線程名稱的構造方法
	public MyThread(String name) {
		//調用父類的String參數(shù)的構造方法,指定線程的名稱
		super(name);
	}
	/**
	 * 重寫run方法,完成該線程執(zhí)行的邏輯
	 */
	@Override
	public void run() {
		for (int i = 0; i < 10; i++) {
			System.out.println(getName()+":正在執(zhí)行!"+i);
		}
	}
}

到此這篇關于Java多線程并發(fā)與并行和線程與進程案例的文章就介紹到這了,更多相關Java多線程內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java開發(fā)druid數(shù)據(jù)連接池maven方式簡易配置流程示例

    Java開發(fā)druid數(shù)據(jù)連接池maven方式簡易配置流程示例

    本篇文章主要為大家介紹了java開發(fā)中druid數(shù)據(jù)連接池maven方式的簡易配置流程示例,文中附含詳細的代碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Java 重入鎖和讀寫鎖的具體使用

    Java 重入鎖和讀寫鎖的具體使用

    這篇文章主要介紹了Java 重入鎖和讀寫鎖的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Java try catch finally異常處理組合詳解

    Java try catch finally異常處理組合詳解

    這篇文章主要介紹了Java try catch finally異常處理組合詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Spring?Boot中application配置文件的生效順序及應用范圍

    Spring?Boot中application配置文件的生效順序及應用范圍

    Spring?Boot的一個重要特性就是它的自動配置,這一特性在很大程度上依賴于名稱為application的配置文件,本文將詳細介紹在Spring?Boot中,這些配置文件的加載順序以及每份文件的應用范圍,需要的朋友可以參考下
    2024-03-03
  • Spring?WebMVC初始化Controller流程詳解

    Spring?WebMVC初始化Controller流程詳解

    這篇文章主要介紹了Spring?WebMVC初始化Controller流程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 淺談SpringCloud的微服務架構組件

    淺談SpringCloud的微服務架構組件

    這篇文章主要介紹了淺談SpringCloud的微服務架構組件,Spring Cloud根據(jù)分布式服務協(xié)調治理的需求成立了許多子項目,每個項目通過特定的組件去實現(xiàn),需要的朋友可以參考下
    2023-04-04
  • 解決SpringBoot集成Eureka導致返回結果由json變?yōu)閤ml的問題

    解決SpringBoot集成Eureka導致返回結果由json變?yōu)閤ml的問題

    這篇文章主要介紹了解決SpringBoot集成Eureka導致返回結果由json變?yōu)閤ml的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • springboot jackson配置教程

    springboot jackson配置教程

    這篇文章主要介紹了springboot jackson配置教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java實現(xiàn)窗體程序顯示日歷

    Java實現(xiàn)窗體程序顯示日歷

    這篇文章主要為大家詳細介紹了Java實現(xiàn)窗體程序顯示日歷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • java中如何判斷數(shù)組中是否包含某個元素的幾種方法

    java中如何判斷數(shù)組中是否包含某個元素的幾種方法

    相信大家在操作Java的時候,經常會要檢查一個數(shù)組(無序)是否包含一個特定的值,這篇文章主要給大家介紹了關于java中如何判斷數(shù)組中是否包含某個元素的幾種方法,需要的朋友可以參考下
    2024-08-08

最新評論

鸡东县| 中阳县| 吉隆县| 明光市| 莒南县| 喀喇| 溧水县| 伊宁市| 台山市| 三都| 鄄城县| 仪陇县| 大洼县| 乌兰浩特市| 阳城县| 邛崃市| 隆德县| 临洮县| 商都县| 中阳县| 修文县| 邯郸市| 南皮县| 吉水县| 江门市| 临朐县| 定结县| 时尚| 晋宁县| 朔州市| 万州区| 茌平县| 北流市| 城固县| 监利县| 长垣县| 大足县| 太和县| 修武县| 商丘市| 阳山县|