国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關(guān)于進程、線程、協(xié)程的概念以及Java中的應(yīng)用

這篇具有很好參考價值的文章主要介紹了關(guān)于進程、線程、協(xié)程的概念以及Java中的應(yīng)用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

進程、線程、協(xié)程

本文將從“操作系統(tǒng)”、“Java應(yīng)用”上兩個角度來探究這三者的區(qū)別。

一、進程

在我本人的疑惑中,我有以下3個問題。

1.1為什么要引入進程?

在“多道程序環(huán)境下”,允許多個程序并發(fā)執(zhí)行,此時它們將失去封閉性,并具有間斷性以及不可再現(xiàn)性的特征,因此需要引入進程的概念。

1.2什么是進程?進程由什么構(gòu)成。

進程是程序執(zhí)行的過程 ,包括了動態(tài)創(chuàng)建、調(diào)度和消亡的的整個過程,進程是程序資源管理的最小單位。好比下列匯編代碼代碼所示,包含對程序資源的調(diào)度。

_add_a_and_b:
   push   %ebx
   mov    %eax, [%esp+8] 
   mov    %ebx, [%esp+12]
   add    %eax, %ebx 
   pop    %ebx 
   ret  

_main:
   push   3
   push   2
   call   _add_a_and_b 
   add    %esp, 8
   ret

進程由三部分組成。

  • 進程控制塊(PCB),是進程存在的唯一標識,
  • 程序段
  • 數(shù)據(jù)段

1.3Liunx進程實現(xiàn)

Linux 并沒有為線程準備特定的數(shù)據(jù)結(jié)構(gòu),因為 Linux只有task_struct這一種描述進程的結(jié)構(gòu)體。在內(nèi)核看來只有進程而沒有線程,線程調(diào)度時也是當做進程來調(diào)度的。Linux所謂的線程其實是與其他進程共享資源的輕量級進程。

為什么說是輕量級呢?在于它只有一個最小的執(zhí)行上下文和調(diào)度程序所需的統(tǒng)計信息,它只帶有進程執(zhí)行相關(guān)的信息,與父進程共享進程地址空間

二、線程

2.1線程是什么?

線程是操作操作系統(tǒng)能夠運行運算調(diào)度的最小單位。線程被包含在進程之中,是進程中的實際運作的單位,一個進程內(nèi)可以包含多個線程,線程是資源調(diào)度的最小單位。

在Liunx中,線程沒有特定的數(shù)據(jù)結(jié)構(gòu),如何區(qū)別開來線程與進程的創(chuàng)建呢,這根據(jù)創(chuàng)建時參數(shù)的不同來決定,例如線程只有一個最小的執(zhí)行上下文和調(diào)度程序所需的統(tǒng)計信息。

2.2線程擁有什么?

同一進程中的多條線程共享該進程中的 全部系統(tǒng)資源,如

  • 虛擬地址空間
  • 文件描述符號
  • 信號處理

但是同一個進程的不同線程也有各自的信息,如

  • 調(diào)用棧
  • 寄存器環(huán)境
  • 線程本次存儲

3.3線程分類

3.4 Java如何啟動一個線程

start– > start0 …..Native方法(由JVM中的c++調(diào)用)----> Liunx內(nèi)核的 pthread_create方法

三、協(xié)程

3.1 既然有多線程操作,為什么還要引入?yún)f(xié)程?

操作系統(tǒng)在線程等待IO的時候,會阻塞當前線程,切換到其他線程,這樣在當前線程等待IO的過程中,其他線程可以繼續(xù)執(zhí)行。這樣操作在系統(tǒng)線程較少的時候沒有多大問題,可是當線程數(shù)量非常多的時候,卻產(chǎn)生了問題。一是系統(tǒng)線程會占用非常多的內(nèi)存空間,二是過多的線程切換占用大量的系統(tǒng)時間。

而協(xié)程剛好可以解決上述的兩個問題。

3.2 協(xié)程的概念

協(xié)程就是把原來每個線程分別負責(zé)的任務(wù)壓縮到少量線程中,每個線程中用協(xié)程來實現(xiàn)原來線程級別的任務(wù),因為包裝了系統(tǒng)io導(dǎo)致協(xié)程內(nèi)遇到io不會導(dǎo)致當前線程被掛起,以起到最大化利用時間片,減少線程調(diào)度開銷的作用。

協(xié)程運行在線程之上,當一個協(xié)程運行完成后,可以選擇主動讓出,讓另一個協(xié)程運行在當前線程之上。

  1. 協(xié)程并沒有增加線程數(shù)量,只是在線程的基礎(chǔ)之上通過分時復(fù)用的方式運行多個協(xié)程
  2. 協(xié)程的切換在用戶態(tài)完成,切換的代價比線程從用戶態(tài)到內(nèi)核臺的代價小很多。

3.3 協(xié)程的注意事項

實際上協(xié)程并不是什么銀彈,協(xié)程只有在等待IO的過程中才能重復(fù)利用線程,線程在等待IO的過程中會陷入阻塞狀態(tài)。

假設(shè)協(xié)程運行在線程之上,并且協(xié)程調(diào)用了一個阻塞IO操作,這時候會發(fā)生什么?實際上操作系統(tǒng)并不知道協(xié)程的存在,它只知道線程,因此在協(xié)程調(diào)用阻塞IO操作的時候,操作系統(tǒng)會讓線程進入阻塞狀態(tài),當前的協(xié)程和其它綁定在該線程之上的協(xié)程都會陷入阻塞而得不到調(diào)度,這往往是不能接受的。

3.4 Java中的應(yīng)用--虛擬線程

Java 19 已經(jīng)預(yù)2022年9月20日發(fā)布,虛擬線程是其中的一項預(yù)覽功能。

虛擬線程是輕量級的線程,它們不與操作系統(tǒng)線程綁定,而是由 JVM 來管理。它們適用于“每個請求一個線程”的編程風(fēng)格,同時沒有操作系統(tǒng)線程的限制。我們能夠創(chuàng)建數(shù)以百萬計的虛擬線程而不會影響吞吐。這與 Go 編程語言(Golang)的協(xié)程(如goroutines)非常相似。文章來源地址http://www.zghlxwxcb.cn/news/detail-480283.html

Thread.startVirtualThread(() -> {
    System.out.println("Hello, Project Loom!");
});

到了這里,關(guān)于關(guān)于進程、線程、協(xié)程的概念以及Java中的應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Java多線程】關(guān)于多線程的一些案例 —— 單例模式中的餓漢模式和懶漢模式以及阻塞隊列

    【Java多線程】關(guān)于多線程的一些案例 —— 單例模式中的餓漢模式和懶漢模式以及阻塞隊列

    目錄 1、單例模式 1.1、餓漢模式 2.1、懶漢模式? 2、阻塞隊列 2.1、BlockingQueue 阻塞隊列數(shù)據(jù)結(jié)構(gòu) 對框架和設(shè)計模式的簡單理解就是,這兩者都是“大佬”設(shè)計出來的,讓即使是一個代碼寫的不太好的“菜雞程序員”也能寫出還可以的代碼。 設(shè)計模式也可以認為是對編程語言語

    2024年03月23日
    瀏覽(27)
  • 重寫Sylar基于協(xié)程的服務(wù)器(0、搭建開發(fā)環(huán)境以及項目框架 || 下載編譯簡化版Sylar)

    重寫Sylar基于協(xié)程的服務(wù)器(0、搭建開發(fā)環(huán)境以及項目框架 || 下載編譯簡化版Sylar)

    重寫Sylar基于協(xié)程的服務(wù)器系列: 重寫Sylar基于協(xié)程的服務(wù)器(0、搭建開發(fā)環(huán)境以及項目框架 || 下載編譯簡化版Sylar) 重寫Sylar基于協(xié)程的服務(wù)器(1、日志模塊的架構(gòu)) 重寫Sylar基于協(xié)程的服務(wù)器(2、配置模塊的設(shè)計) 重寫Sylar基于協(xié)程的服務(wù)器(3、協(xié)程模塊的設(shè)計) 重寫

    2024年04月26日
    瀏覽(20)
  • 操作系統(tǒng)進程線程(一)—進程線程協(xié)程區(qū)別、多進程多線程、進程調(diào)度算法、進程線程通信

    操作系統(tǒng)進程線程(一)—進程線程協(xié)程區(qū)別、多進程多線程、進程調(diào)度算法、進程線程通信

    定義上 進程: 資源分配和擁有 的基本單位,是調(diào)度的基本單位。 運行一個可執(zhí)行程序會創(chuàng)建一個或者多個進程;進程就是運行起來的程序 線程:程序 執(zhí)行 基本單位,輕量級進程。 每個進程中都有唯一的主線程 ,主線程和進程是相互依賴的關(guān)系。 協(xié)程: 用戶態(tài) 的輕量級

    2024年02月01日
    瀏覽(96)
  • 什么是進程、線程、協(xié)程

    什么是進程、線程、協(xié)程

    我們都知道計算機的核心是CPU,它承擔(dān)了所有的計算任務(wù);而操作系統(tǒng)是計算機的管理者,它負責(zé)任務(wù)的調(diào)度、資源的分配和管理,統(tǒng)領(lǐng)整個計算機硬件;應(yīng)用程序則是具有某種功能的程序,程序是運行于操作系統(tǒng)之上的。 進程是一個具有一定獨立功能的程序在一個數(shù)據(jù)集上

    2024年02月13日
    瀏覽(26)
  • 線程 進程 協(xié)程 區(qū)別

    在并發(fā)編程中,\\\"線程\\\"和\\\"協(xié)程\\\"都是用于實現(xiàn)并發(fā)執(zhí)行的概念,但它們有一些重要的區(qū)別。 線程(Thread): 線程是操作系統(tǒng)的概念,是操作系統(tǒng)調(diào)度的最小執(zhí)行單位,是進程中的一個實體,表示程序執(zhí)行的基本單元。 線程由操作系統(tǒng)內(nèi)核調(diào)度和管理,它擁有自己的執(zhí)行上下文

    2024年02月04日
    瀏覽(32)
  • 進程,線程,協(xié)程

    1、進程 進程是具有一定獨立功能的程序關(guān)于某個??數(shù)據(jù)集??合上的一次運行活動,進程是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。每個進程都有自己的獨立內(nèi)存空間,不同進程通過進程間通信來通信。由于進程比較重量,占據(jù)獨立的內(nèi)存,所以上下文進程間的切換開銷

    2024年02月11日
    瀏覽(27)
  • 【Linux操作系統(tǒng)】Linux中的進程和線程的概念、區(qū)別和實現(xiàn)的細節(jié)

    在Linux中,進程和線程是操作系統(tǒng)中兩個重要的執(zhí)行單位。它們是對程序運行時的抽象概念,用于管理和調(diào)度計算機資源。 進程是正在運行的程序的實例。它是操作系統(tǒng)分配資源和調(diào)度執(zhí)行的基本單位。每個進程都有自己獨立的內(nèi)存空間,包含代碼、數(shù)據(jù)、堆棧等。進程還包

    2024年02月14日
    瀏覽(44)
  • Python多任務(wù)教程:進程、線程、協(xié)程

    Python多任務(wù)教程:進程、線程、協(xié)程

    進程是一個具有一定獨立功能的程序在一個數(shù)據(jù)集上的一次動態(tài)執(zhí)行的過程,是操作系統(tǒng)進行資源分配和調(diào)度的一個獨立單位,是應(yīng)用程序運行的載體。進程是一種抽象的概念,從來沒有統(tǒng)一的標準定義。進程一般由程序、數(shù)據(jù)集合和進程控制塊三部分組成。程序用于描述進

    2024年02月12日
    瀏覽(30)
  • Linux的進程,協(xié)程和線程

    Linux的進程、協(xié)程和線程是計算機科學(xué)中重要的概念,它們在操作系統(tǒng)和并發(fā)編程中發(fā)揮著關(guān)鍵的作用。讓我們逐個詳解這些概念,并討論它們之間的關(guān)系。 進程是操作系統(tǒng)中的一個執(zhí)行單元,它包含了程序執(zhí)行所需的所有資源,如內(nèi)存空間、文件描述符、寄存器等。 進程是

    2024年01月23日
    瀏覽(20)
  • 1.Unity協(xié)程、進程、線程的區(qū)別

    1.Unity協(xié)程、進程、線程的區(qū)別

    1、 進程 擁有自己獨立的堆和棧,堆和棧都不共享,進程由操作系統(tǒng)調(diào)度。 2、 線程 有自己獨立的棧和共享的堆,棧不共享,堆共享,標準的線程也是由系統(tǒng)調(diào)度。 3、 協(xié)程 有自己獨立的棧和共享的堆,棧不共享,堆共享,協(xié)程由程序員在協(xié)程的代碼里面調(diào)度。 協(xié)程多與線

    2024年02月03日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包