(一)進程與線程

一、進程和線程的概念

1.1 進程

  • 程序由指令和數據組成,但這些指令要運行,數據要讀寫,就必須將指令加載至CPU,數據加載至內存。在指令運行過程中還需要用到磁盤、網絡等設備。進程就是用來加載指令、管理內存、管理 IO 的。
  • 當一個程序被運行,從磁盤加載這個程序的代碼至內存,這時就開啟了一個進程。
  • 進程可以視為程序的一個實例。大部分程序可以同時運行多個實例進程(例如記事本、畫圖、瀏覽器等),也有的程序只能啟動一個實例進程(例如網易云音樂、360安全衛士等)。

1.2 線程

  • 一個進程之內可以分為一到多個線程
  • 一個線程就是一個指令流,將指令流中的一條條指令以一定的順序交給 CPU 執行
  • Java 中,線程作為最小調度單位,進程作為資源分配的最小單位。在 Windows 中進程是不活動的,只是作為線程的容器

1.3 二者對比

  • 進程基本上相互獨立的,而線程存在于進程內,是進程的一個子集
  • 進程擁有共享的資源,如內存空間等,供其內部的線程共享
  • 進程間通信較為復雜
    • 同一臺計算機的進程通信稱為 IPC(Inter-process communication)
    • 不同計算機之間的進程通信,需要通過網絡,并遵守共同的協議,例如 HTTP
  • 線程通信相對簡單,因為它們共享進程內的內存,一個例子是多個線程可以訪問同一個共享變量
  • 線程更輕量,線程上下文切換成本一般要比進程上下文切換低

二、并行和并發的概念

單核 CPU 下,線程實際還是 串行執行的。操作系統中有一個組件叫做任務調度器,將 CPU 的時間片(Windows 下時間片最小約為 15 毫秒)分給不同的線程使用,只是由于 CPU 在線程間(時間片很短)的切換非常快,人類感覺是同時運行的。總結為一句話就是:微觀串行,宏觀并行。
一般會將這種線程輪流使用 CPU 的做法稱為并發,concurrent。

  • 并發(concurrent)是同一時間應對(dealing with)多件事情的能力
  • 并行(parallel)是同一時間動手做(doing)多件事情的能力

例子:

  • 家庭主婦做飯、打掃衛生、給孩子喂奶,一個人輪流交替做這多件事,這是就是并發
  • 家庭主婦雇了個保姆,她們一起做這些事,這時既有并發,也有并行(這時可能會產生競爭,例如只有一口鍋,一個人用鍋時,另一個人就得等待)
  • 雇了3個保姆,一個專門做飯、一個專門打掃衛生、一個專門喂奶,互不打擾,這時是并行

三、總結

  • 程序是有指令和代碼組成的。進程是運行中的程序,進程可以視為程序的一個實例。一個進程之內可以分為一到多個線程。一個線程就是一個指令流,將指令流中的一條條指令以一定的順序交給 CPU 執行。
  • 單核 CPU 下,線程實際還是 串行執行的。
  • 并行:多個 CPU 同時執行多個任務,比如:多個人同時做不同的事。
  • 并發:一個 CPU(采用時間片)同時執行多個任務,比如:秒殺、多個人做同一件事。
  • 一般會將這種線程輪流使用 CPU 的做法稱為并發。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/39977.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39977.shtml
英文地址,請注明出處:http://en.pswp.cn/web/39977.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙系統的開發與學習

1.開發工具的下載 DevEco Studio-HarmonyOS Next Beta版-華為開發者聯盟 安裝、環境配置時,建議 自定義目錄 注意:路徑中不要有 中文、特殊字符。 2.ArkTS基礎總結 1)三種數據類型 ① string 字符串:描述信息 ② number 數…

銀聯快捷支付的優點!

快速支付,又稱電子支付或第三方支付,在行業中得到了廣泛的應用。用戶只需通過銀行完成交易。方便快捷是指銀行可以在任何條件下支持用戶之間的轉賬、支付等即時結算服務。快速支付是指用戶可以通過手機實現銀行卡等相關操作。然而,現在大多數…

Java后端每日面試題(day1)

目錄 JavaWeb三大組件依賴注入的方式Autowire和Resurce有什么區別?Spring Boot的優點Spring IoC是什么?說說Spring Aop的優點Component和Bean的區別自定義注解時使用的RetentionPolicy枚舉類有哪些值?如何理解Spring的SPI機制?Spr…

聽說現在AI產品經理薪資30k起步?0基礎可以轉行AI產品嗎?

2024年,還有什么新風口? AI、元宇宙、NFT… 很多人不知道,其實不管是元宇宙還是NFT,它們本質上就是人工智能領域。 AI自身應用領域非常廣泛,大批高薪崗位隨之涌了出來,包括AI產品經理。 AI產品經歷具體工…

CSS Float(浮動)

CSS Float(浮動) 概述 CSS Float(浮動)是一種布局技術,它允許開發人員將元素(如圖片或文本)沿著其容器的左側或右側放置,并且讓其他內容圍繞它流動。這種技術在過去被廣泛用于創建多欄布局,盡管現代CSS提供了更多高級的布局方法(如Flexbox和Grid),但理解浮動仍然…

【LeetCode:841. 鑰匙和房間 + DFS】

🚀 算法題 🚀 🌲 算法刷題專欄 | 面試必備算法 | 面試高頻算法 🍀 🌲 越難的東西,越要努力堅持,因為它具有很高的價值,算法就是這樣? 🌲 作者簡介:碩風和煒,…

安卓手機已刪除短信如何恢復?這2個技巧,找回離家出走的短信

手機宛如一座豐富的寶庫,珍藏著生活中的點滴回憶。其中,短信作為溝通的橋梁,記錄著我們與親朋好友間的溫情脈脈,承載著無數珍貴的瞬間。然而,有時,我們卻會不慎觸發寶庫中的機關,使得這些寶貴的…

陳文自媒體:30歲房貸1000萬,杠杠超乎想象!

首先寫這個文章我要聲明,這個內容沒有傳播負能量,沒有傳播所謂的焦慮,我只是想表達一下我的觀點。 昨天的中金30歲女士的事件,我相信很多網友都知道了,已經上了熱搜了。 簡單總結一下原因,據說是她和老公…

【計算智能】遺傳算法(二):基本遺傳算法在優化問題中的應用【實驗】

前言 本系列文章架構概覽: 本文將介紹基本遺傳算法在解決優化問題中的應用,通過實驗展示其基本原理和實現過程:選取一個簡單的二次函數作為優化目標,并利用基本遺傳算法尋找其在指定范圍內的最大值。 2. 基本遺傳算法(SGA&#x…

面試公司的時候一般要問HR的問題和關注的福利待遇(比較重要,親測)

1.問是否雙休,是否有五險一金 2.問福利待遇,是否包吃住,是否有班車及補貼等 3.是否加班 4.是否有健身房,食堂等設施 5.是否出差,在哪個城市 6.工作地點能不能選擇 7.晉升機會怎么樣,什么時候才能晉升&#…

從0構建一款appium-inspector工具

上一篇博客從源碼層面解釋了appium-inspector工具實現原理,這篇博客將介紹如何從0構建一款簡單的類似appium-inspector的工具。如果要實現一款類似appium-inspector的demo工具,大致需要完成如下六個模塊內容 啟動 Appium 服務器連接到移動設備或模擬器啟…

vue 中 使用騰訊地圖 (動態引用騰訊地圖及使用簽名驗證)

在設置定位的時候使用 騰訊地圖 選擇地址 在 mounted中引入騰訊地圖: this.website.mapKey 為地圖的 key // 異步加載騰訊地圖APIconst script document.createElement(script);script.type text/javascript;script.src https://map.qq.com/api/js?v2.exp&…

SS8812T替代DRV8812的國產雙通道H橋電機驅動芯片

由工采網代理的SS8812T是一款國產雙通道H橋電機驅動芯片;該芯片為打印機和其它電機一體化應用提供一種雙通道集成電機驅動方案;可Pin-to-Pin兼容替代DRV8812,可廣泛應用于POS、打印機、安防相機、辦公自動化設備、游戲機、機器人等。 產品描述…

Vue.js 案例——商品管理

一.需要做出的效果圖&#xff1a; 二.實現的步驟 首先&#xff0c;先建一個項目&#xff0c;命名Table&#xff0c;在Table項目中的components里新建一個MyTable.vue文件。 第二步&#xff0c;在原有的 HelloWorld.vue中寫入代碼。 HelloWorld.vue代碼如下&#xff1a; <…

KumiaoQQ機器人框架源碼

源碼介紹 酷喵機器人框架基于PC協議與MGCH的結合&#xff0c;MGCH即 MiraiGO-CQhttp&#xff08;代碼類型&#xff1a;易語言&#xff09;基本的API功能已經實現&#xff0c;具體可自測&#xff08;教程/日志/說明文本已附帶&#xff09;開放源碼僅供參考學習交流&#xff0c;…

遠超美國!中國AI專利數量全球第一!商湯推出面向C端用戶大模型“Vimi”,可生成分鐘級視頻!|AI日報

文章推薦 蘋果獲得OpenAI董事會觀察員職位&#xff01;Runway正籌集新一輪融資&#xff0c;估值40億美元&#xff01;&#xff5c;AI日報 AI基準測評&#xff08;下&#xff09;&#xff1a;視頻生成、代碼能力、邏輯推理&#xff0c;AI是否已經超越人類&#xff1f; 聯合國…

【linux高級IO(一)】理解五種IO模型

&#x1f493;博主CSDN主頁:杭電碼農-NEO&#x1f493; ? ?專欄分類:Linux從入門到精通? ? &#x1f69a;代碼倉庫:NEO的學習日記&#x1f69a; ? &#x1f339;關注我&#x1faf5;帶你學更多操作系統知識 ? &#x1f51d;&#x1f51d; Linux高級IO 1. 前言2. 重談對…

kubernetes dashboard安裝

1.查看符合自己版本的kubernetes Dashboard 比如我使用的是1.23.0版本 https://github.com/kubernetes/dashboard/releases?page5 對應版本 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml修改對應的yaml,…

Linux Conda 入門案例教程

Conda 的基本概念 1.什么是 Conda&#xff1f;&#xff1a;Conda 是一個開源的包管理器和環境管理器&#xff0c;用于管理 Python 和其他語言的環境和依賴項。 2.Conda 的特點&#xff1a;Conda 的特點包括快速、可靠、靈活和跨平臺支持等。 安裝和配置 1.安裝 Conda&#x…

adb不插usb線通過wifi調試

說起做手機開發也有好多年了&#xff0c;說來慚愧&#xff0c;我最近才知道安卓手機是可以不插數據線進行開發調試的。起因是公司近期采購了一批安卓一卡通設備&#xff0c;需要對其進行定制開發APP,但是由于我插USB調試發現沒有反應。通過詢問廠家才知道可以通過WIFI進行調試。…