Java多線程原理+基礎知識(超級超級詳細)+(併發與並行)+(進程與線程)1

来源:https://www.cnblogs.com/pjhaymy/archive/2020/07/16/13323801.html
-Advertisement-
Play Games

Java多線程 我們先來瞭解兩個概念!!!! 1.什麼是併發與並行 2.什麼是進程與線程 1.什麼是併發與並行 1.1並行:兩個事情在同一時刻發生 1.2併發:兩個事情在同一時間段內發生 併發與並行的區別: 1.並行是指兩個或者多個事件在同一時刻發生;而併發是指兩個或多個事件在同一時間間隔發生。 2 ...


Java多線程

我們先來瞭解兩個概念!!!!
1.什麼是併發與並行
2.什麼是進程與線程

1.什麼是併發與並行

1.1並行:兩個事情在同一時刻發生
在這裡插入圖片描述
1.2併發:兩個事情在同一時間段內發生
在這裡插入圖片描述
併發與並行的區別:
1.並行是指兩個或者多個事件在同一時刻發生;而併發是指兩個或多個事件在同一時間間隔發生。
2.並行是不同實體上的多個事件,併發是多個實體的不同事件
3.並行是多個處理器同時處理多個任務,併發是一個處理器“同時“處理多個任務
併發的同時是指巨集觀上的同時:
在同一時刻只能有一條指令執行,但多個進程指令被快速的輪換執行,使得在巨集觀上具有多個進程同時執行的效果,但在微觀上並不是同時執行的,只是把時間分成若幹段,使多個進程快速交替的執行。
小科普
而在多個 CPU 系統中,則這些可以併發執行的程式便可以分配到多個處理器上(CPU),實現多任務並行執行, 即利用每個處理器來處理一個可以併發執行的程式,這樣多個程式便可以同時執行。目前電腦市場上說的多核 CPU,便是多核處理器,核 越多,並行處理的程式越多,能大大的提高電腦運行的效率。

什麼是進程與線程

進程:數值一個記憶體中的應用程式,每個進程都有一個獨立的存儲空間,一個應用程式可以同時運行多個進程,進程是程式的一次執行過程,是系統運行的基本單位,系統運行一個程式是一個進程從創建運行到消亡的過程
打開任務管理器就可以看到電腦上運行的進程

在這裡插入圖片描述

線程:線程是進程的一個執行單元,負責當前進程中程式的執行,一個進程可以有多個線程多個線程的程式被稱為多線程程式
這些就是一個個進程

在這裡插入圖片描述線程調度
分時調度
所有線程輪流使用cpu的使用權,平均分配每個線程占用cpu的時間
搶占式調度
搶先讓優先順序高的線程使用cpu,如果線程優先順序相同,那麼會隨機選擇一個執行,java使用搶占式調度
設置線程的優先順序
在這裡插入圖片描述搶占式調度的好處
大部分操作系統都支持多進程併發運行,現在的操作系統都支持同時運行多個程式比如我們可以在打lol的時候同時聽歌
實際上cpu使用搶占式調度模式在多個線程之間進行高速的切換,對於cpu的一個核而言,某個時刻只能執行一個線程,而cpu在多個線程之間切換速度很快看上去像在同一時刻運行,多線程不能提高程式的運行速度,但是可以提高程式的運行效率,讓cpu的使用效率更高

這是學習java多線程前需要瞭解的一些基礎知識,我下一篇文章會來簡述java多線程的使用
如有錯誤還請各位批評指正


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • WPF MVVM 模式下的彈窗,包括確認框和信息提示框,MVVM 模式的用戶控制項。 ...
  • 原理:依賴oracle user_source數據字典,將腳本select出來拼成字元串。 具體實現參考隔壁大佬:https://blog.csdn.net/xiaoqiaoluanwu/article/details/48733781 有了這個轉換的函數,剩下的就是用你習慣的語言把結構select ...
  • 【翻譯】.NET 5中的性能改進 在.NET Core之前的版本中,其實已經在博客中介紹了在該版本中發現的重大性能改進。 從.NET Core 2.0到.NET Core 2.1到.NET Core 3.0的每一篇文章,發現談論越來越多的東西。 然而有趣的是,每次都想知道下一次是否有足夠的意義的改進 ...
  • 源碼下載:https://pan.baidu.com/s/1l_XNjpGrrhrx9fz0MXQHLQ 提取碼: pr8q Nuget里搜索安裝SignalR,非ASP.NET CORE版本。 1.增加Startup類 using System; using System.Threading.Ta ...
  • 上次課程我們完成了需求的梳理。 我們根據梳理的需求把菜單配好,另外我們把項目里程碑也配置在系統中,開發和管理都在系統中,形成無文檔化管理。 一、菜單配置 根據我們的歸納圖,我們先將菜單配置好。 我們遵循敏捷開發的原則,近期要開發的功能列的詳細點,遠期要開發的先不展開。 我們要開發的第一個功能是 數據 ...
  • 介面與抽象類的區別: 介面支持多繼承;抽象類不能實現多繼承。 介面可以用於支持回調;抽象類不能實現回調,因為繼承不支持。 介面只包含方法、屬性、索引器、事件的簽名,但不能定義欄位和包含實現的方法;抽象類可以定義欄位、屬性、包含有實現的方法。 介面可以作用於值類型和引用類型;抽象類只能作用於引用類型。 ...
  • 最近項目需要重新編譯libcurl 使其支持ssl,在這裡進行記錄: 下載openssl : curl -O -L https://github.com/openssl/openssl/archive/OpenSSL_1_1_1g.zip 創建安裝目錄:/opt/openssl 配置openssl動 ...
  • 我們都知道,微服務之間通過feign傳遞,在複雜的微服務架構系統中,幾乎每一個前端請求都會形成一個複雜的分散式服務調用鏈路,在每條鏈路中任何一個依賴服務出現延遲超時或者錯誤都有可能引起整個請求最後的失敗。當業務流程足夠複雜時,一個完整的HTTP請求調用鏈一般會經過多個微服務系統,要通過日誌來跟蹤一整 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...