欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中進(jìn)程與線程的區(qū)別

 更新時(shí)間:2022年05月09日 10:40:08   作者:??Java中文社群????  
這篇文章主要介紹了Java進(jìn)程與線程的區(qū)別,進(jìn)程(Process)是操作系統(tǒng)分配資源的基本單位,線程(Thread)是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的基本單位,下文更多兩者區(qū)別。需要的小伙伴可以參考一下

前言:

從用戶的角度來(lái)看,進(jìn)程是正在運(yùn)行的程序?qū)嵗€程是進(jìn)程中真正執(zhí)行任務(wù)的基本單位。也就是說(shuō)一個(gè)運(yùn)行的程序至少包含一個(gè)進(jìn)程,一個(gè)進(jìn)程至少包含一個(gè)線程,線程不能獨(dú)立于進(jìn)程而存在。

進(jìn)程

進(jìn)程(Process)是操作系統(tǒng)分配資源的基本單位,一個(gè)進(jìn)程擁有的資源有自己的堆、棧、虛存空間(頁(yè)表)、文件描述符等信息。 從編程的角度來(lái)理解進(jìn)程,可以把它看作是一個(gè)類或一個(gè) PCB(Process Control Block)進(jìn)程控制塊的結(jié)構(gòu)體,這個(gè)結(jié)構(gòu)體中大致包含以下幾個(gè)內(nèi)容:

  • 進(jìn)程編號(hào) PID:進(jìn)程的身份標(biāo)識(shí)。
  • 進(jìn)程的狀態(tài):
    • 新建狀態(tài)
    • 就緒狀態(tài)
    • 運(yùn)行狀態(tài)
    • 阻塞狀態(tài)
    • 銷毀狀態(tài)
  • 執(zhí)行優(yōu)先級(jí)
  • 上下文:保存本次執(zhí)行狀態(tài),以便下次繼續(xù)執(zhí)行,這個(gè)過(guò)程就是一個(gè)上下文。
  • 內(nèi)存地址

線程

線程(Thread)是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的基本單位。它包含在進(jìn)程中,是進(jìn)程中的實(shí)際運(yùn)行單位。在 Unix System V 及 SunOS 中線程也被稱為輕量進(jìn)程(lightweight processes),但輕量進(jìn)程更多指內(nèi)核線程(kernel thread),而把用戶線程(user thread)稱為線程。

PS:用戶線程可以理解為應(yīng)用程序自己的線程,由程序員創(chuàng)建并控制的線程;而內(nèi)核線程是內(nèi)核支持并使用的線程。

線程優(yōu)勢(shì)

線程是輕量級(jí)的進(jìn)程,一個(gè)進(jìn)程中包含了多個(gè)線程,因此多個(gè)線程間可以共享進(jìn)程資源,

線程和進(jìn)程的關(guān)系如下圖所示: 

 其中,堆和方法區(qū)是可以共享的區(qū)域,而程序計(jì)數(shù)器和棧是每個(gè)線程私有的。

  • 程序計(jì)數(shù)器是一塊內(nèi)存區(qū)域,用來(lái)記錄線程當(dāng)前要執(zhí)行的指令地址。
  • 棧是用來(lái)記錄每個(gè)線程自己的局部變量的。
  • 堆中存放的是當(dāng)前程序創(chuàng)建的所有對(duì)象。
  • 方法區(qū)存放的是常量和靜態(tài)變量等信息。

進(jìn)程和線程的區(qū)別

進(jìn)程和線程的區(qū)別主要體現(xiàn)在以下幾點(diǎn)。

區(qū)別1:從屬關(guān)系不同

從屬關(guān)系不同:進(jìn)程是正在運(yùn)行程序的實(shí)例,進(jìn)程中包含了線程,而線程中不能包含進(jìn)程。

區(qū)別2:描述側(cè)重點(diǎn)不同

描述側(cè)重點(diǎn)不同:進(jìn)程是操作系統(tǒng)分配資源的基本單位,而線程是操作系統(tǒng)調(diào)度的基本單位。

區(qū)別3:共享資源不同

共享資源不同:多個(gè)進(jìn)程間不能共享資源,每個(gè)進(jìn)程有自己的堆、棧、虛存空間(頁(yè)表)、文件描述符等信息,而線程可以共享進(jìn)程資源文件(堆和方法區(qū))。

區(qū)別4:上下文切換速度不同

上下文切換速度不同:線程上下文切換速度很快(上下文切換指的是從一個(gè)線程切換到另一個(gè)線程),而進(jìn)程的上下文切換的速度比較慢。

區(qū)別5:操縱者不同

操縱者不同:一般情況下進(jìn)程的操縱者是操作系統(tǒng),而線程的操縱者是編程人員。

總結(jié)

進(jìn)程是操作系統(tǒng)分配資源的基本單位,而線程是操作系統(tǒng)調(diào)度的基本單位。一個(gè)進(jìn)程中至少包含一個(gè)線程,線程不能獨(dú)立于進(jìn)程而存在。進(jìn)程不能共享資源,而線程可以。線程可以看作是輕量級(jí)的進(jìn)程,它們的主要區(qū)別體現(xiàn)在:從屬關(guān)系、描述側(cè)重點(diǎn)、共享資源、上下文切換速度和操縱對(duì)象等不同。?

到此這篇關(guān)于Java進(jìn)程與線程的區(qū)別的文章就介紹到這了,更多相關(guān)Java進(jìn)程與線程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot jackson自定義序列化和反序列化實(shí)例

    springboot jackson自定義序列化和反序列化實(shí)例

    這篇文章主要介紹了spring boot jackson自定義序列化和反序列化實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • SpringBoot整合RabbitMQ實(shí)現(xiàn)六種工作模式的示例

    SpringBoot整合RabbitMQ實(shí)現(xiàn)六種工作模式的示例

    這篇文章主要介紹了SpringBoot整合RabbitMQ實(shí)現(xiàn)六種工作模式,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • springboot?vue項(xiàng)目管理前后端實(shí)現(xiàn)編輯功能

    springboot?vue項(xiàng)目管理前后端實(shí)現(xiàn)編輯功能

    這篇文章主要為大家介紹了springboot?vue項(xiàng)目管理前后端實(shí)現(xiàn)編輯功能,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • JAVA實(shí)現(xiàn)網(wǎng)絡(luò)/本地圖片轉(zhuǎn)BASE64存儲(chǔ)代碼示例

    JAVA實(shí)現(xiàn)網(wǎng)絡(luò)/本地圖片轉(zhuǎn)BASE64存儲(chǔ)代碼示例

    這篇文章主要給大家介紹了關(guān)于JAVA實(shí)現(xiàn)網(wǎng)絡(luò)/本地圖片轉(zhuǎn)BASE64存儲(chǔ)的相關(guān)資料,Base64是網(wǎng)絡(luò)上最常見(jiàn)的用于傳輸8Bit字節(jié)碼的編碼方式之一,Base64就是一種基于64個(gè)可打印字符來(lái)表示二進(jìn)制數(shù)據(jù)的方法,需要的朋友可以參考下
    2023-07-07
  • Mybatis?一級(jí)緩存和二級(jí)緩存原理區(qū)別

    Mybatis?一級(jí)緩存和二級(jí)緩存原理區(qū)別

    這篇文章主要介紹了Mybatis?一級(jí)緩存和二級(jí)緩存原理區(qū)別?,文章通過(guò)圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Mybatis插件PageHelper的實(shí)現(xiàn)原理詳解

    Mybatis插件PageHelper的實(shí)現(xiàn)原理詳解

    PageHelper 是一款開(kāi)源的 MyBatis 分頁(yè)插件,可以在實(shí)際應(yīng)用中方便地實(shí)現(xiàn)分頁(yè)功能,這篇文章主要來(lái)和大家講講PageHelper的原理與使用,需要的可以參考下
    2023-06-06
  • Mybatis-Plus-AutoGenerator 最詳細(xì)使用方法

    Mybatis-Plus-AutoGenerator 最詳細(xì)使用方法

    這篇文章主要介紹了Mybatis-Plus-AutoGenerator 最詳細(xì)使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • spring的父子容器及配置詳解

    spring的父子容器及配置詳解

    本篇文章主要介紹了spring的父子容器及配置詳解,詳細(xì)的介紹了spring父子容器的概念、使用場(chǎng)景和用法,有興趣的可以了解一下
    2018-01-01
  • springboot整合redis之消息隊(duì)列

    springboot整合redis之消息隊(duì)列

    本文主要介紹了springboot整合redis之消息隊(duì)列,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • java 實(shí)現(xiàn)當(dāng)前時(shí)間加減30分鐘的時(shí)間代碼

    java 實(shí)現(xiàn)當(dāng)前時(shí)間加減30分鐘的時(shí)間代碼

    這篇文章主要介紹了java 實(shí)現(xiàn)當(dāng)前時(shí)間加減30分鐘的時(shí)間代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08

最新評(píng)論