Java高頻面試之并發編程-01

hello啊,各位觀眾姥爺們!!!本baby今天來報道了!哈哈哈哈哈嗝🐶

面試官:并行跟并發有什么區別?

并發 vs 并行:核心區別與場景

1. 定義對比
維度并發(Concurrency)并行(Parallelism)
核心處理多任務的能力(不要求同時執行)同時執行多任務(物理上同步)
資源依賴單核即可實現(通過時間片切換)必須依賴多核/多機(如GPU、分布式集群)
目標提高資源利用率(如IO阻塞時切換任務)縮短任務完成時間(拆分任務并行計算)
2. 典型場景
  • 并發
    • Web服務器同時處理上千請求(Nginx通過事件循環單線程響應)。
    • 下載文件時同時更新UI進度條(主線程與后臺線程交替執行)。
  • 并行
    • 圖像渲染使用GPU的數千核心并行計算。
    • Hadoop將大數據作業拆分到多臺機器并行處理。
3. 技術實現
  • 并發控制
    • 鎖機制synchronizedReentrantLock(避免競態條件)。
    • 無鎖編程:CAS(如AtomicInteger)、Disruptor環形隊列。
  • 并行框架
    • 多線程:Java的ForkJoinPool、C++的OpenMP。
    • 分布式:Spark RDD、MPI(消息傳遞接口)。
4. 性能瓶頸
問題類型并發并行
常見挑戰死鎖、線程切換開銷、資源競爭任務拆分不均、通信延遲、同步成本高
優化手段協程(減少上下文切換)、異步IO負載均衡(如Work Stealing算法)
5. 代碼示例

并發(交替執行)

# 單核CPU通過時間片處理兩個線程
import threadingdef task1():while True: print("Task1")def task2():while True: print("Task2")threading.Thread(target=task1).start()
threading.Thread(target=task2).start()
# 輸出交替打印,但實際任一時刻只有一個線程在運行

并行(同時執行)

# 多核CPU同時執行兩個進程
from multiprocessing import Processdef task1():while True: print("Task1")def task2():while True: print("Task2")if __name__ == '__main__':Process(target=task1).start()Process(target=task2).start()
# 兩個進程可能同時在不同核心上運行
6. 關聯與協同
  • 并發是并行的基礎:多線程程序在多核CPU上可轉為并行。
  • Amdahl定律:并行加速比受限于程序中必須串行的部分。
    S p e e d u p ≤ 1 1 ? P + P N Speedup \leq \frac{1}{1 - P + \frac{P}{N}} Speedup1?P+NP?1?
    (P為并行比例,N為處理器數量)
總結
  • 選型建議
    • IO密集型(如網絡請求)→ 優先并發(協程/異步)。
    • CPU密集型(如科學計算)→ 優先并行(多進程/分布式)。
  • 誤區
    增加線程數 ≠ 提升并行度(線程數超過CPU核心數可能引發頻繁切換,反而降低性能)。

在這里插入圖片描述

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

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

相關文章

從零開始學Rust:所有權(Ownership)機制精要

文章目錄 第四章:Ownership 所有權核心概念關鍵機制引用與借用(Reference & Borrowing)懸垂引用問題錯誤示例分析解決方案引用安全規則 切片(Slice)內存安全保證 第四章:Ownership 所有權 Ownership i…

一旦懂得,有趣得緊1:詞根tempt-(嘗試)的兩種解法

詞根tempt-嘗試 tempt vt.引誘;誘惑;慫恿;利誘;勸誘;鼓動 temptation n.引誘;誘惑 // tempt v.引誘 -ation 名詞后綴 attempt v.&n.嘗試,試圖 // at- 加強 tempt 嘗試contempt n.蔑視&am…

召喚數學精靈

1.召喚數學精靈 - 藍橋云課 問題描述 數學家們發現了兩種用于召喚強大的數學精靈的儀式,這兩種儀式分別被稱為累加法儀式 A(n) 和累乘法儀式 B(n)。 累加法儀式 A(n) 是將從1到 n 的所有數字進行累加求和,即: A(n)12?n 累乘法儀式 B(n) …

C語言實現查表8位SAE J1850 CRC

背景: 在做霍爾采集電流的時候,CSSV1500N 系列電流傳感器通過can數據輸出的報文需要做crc校驗,嵌入式常用查表的方式,所以就問了下deepseek怎么算這個CRC. 以下是使用 查表法(Lookup Table) 在C語言中高效…

【UE5.3.2】初學1:適合初學者的入門路線圖和建議

3D人物的動作制作 大神分析:3D人物的動作制作通常可以分為以下幾個步驟: 角色綁定(Rigging):將3D人物模型綁定到一個骨骼結構上,使得模型能夠進行動畫控制。 動畫制作(Animation):通過控制骨骼結構,制作出人物的各種動作,例如走路、跳躍、打斗等。 動畫編輯(Ani…

mapreduce的工作原理

MapReduce 是 Hadoop 中實現分布式并行計算的核心框架,其工作原理基于“分而治之”的思想,將大規模數據處理任務分解為 Map(映射) 和 Reduce(歸約) 兩個階段。 一、MapReduce 核心流程 1. Input 階段 - 輸…

換季推廣不好做?DeepBI用一鍵托管的方式,讓廣告投放跑得快、準、穩

每年換季,尤其是春夏、秋冬交替的節點,都是電商平臺上各類季節性商品扎堆上新的高峰期。無論是服飾鞋包、家居戶外,還是母嬰用品、美妝護膚,許多商品都有著強烈的“時間窗口效應”——一旦錯過了熱賣期,流量下滑迅速&a…

Qt5.14.2+Cmake使用mingw64位編譯opencv4.5成功圖文教程

? 一、下載安裝相關編譯環境軟件 1.1 Python3.8:安裝路徑:C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32 安裝包:python3.8.exe 1.2 QT5.14.2:安裝路徑:C:\Qt\Qt5.14.2 1.3 opencv4.5:解壓路徑D:\o…

OpenBMC:BmcWeb 處理http請求3 字典樹查找節點

OpenBMC:BmcWeb 處理http請求2 查找路由對象-CSDN博客 findRouteByPerMethod實際上是調用了perMethod.trie.find(url);來查找路由對象的 class Trie {struct FindResult{unsigned ruleIndex;std::vector<std::string> params;};FindResult findHelper(const std::string…

Openssl自簽證書相關知識

1.前提 檢查是否已安裝 openssl $ which openssl /usr/bin/openssl 2.建立CA授權中心 2.1.生成ca私鑰(ca-prikey.pem) 初始化 OpenSSL 證書頒發機構(CA)的序列號文件 在生成證書時,ca.srl 的初始序列號需正確初始化(如 01),否則可能導致證書沖突 這會將 01 顯示在屏幕…

K個一組翻轉鏈表--囊括半數鏈表題的思想

K 個一組翻轉鏈表 這道算法題就是鏈表多個算法思想的結合&#xff0c;解決這一道leetcodehot100的鏈表題至少能做一半了 大概有一下幾個點 1.鏈表定位 2.鏈表翻轉 3.哨兵節點 4.鏈表合并 看看題目 給你鏈表的頭節點 head &#xff0c;每 k 個節點一組進行翻轉&#xff…

Flutter敏感詞過濾實戰:基于AC自動機的高效解決方案

Flutter敏感詞過濾實戰&#xff1a;基于AC自動機的高效解決方案 在社交、直播、論壇等UGC場景中&#xff0c;敏感詞過濾是保障平臺安全的關鍵防線。本文將深入解析基于AC自動機的Flutter敏感詞過濾實現方案&#xff0c;通過原理剖析實戰代碼性能對比&#xff0c;帶你打造毫秒級…

UML中的用例圖和類圖

在UML&#xff08;統一建模語言&#xff09;中&#xff0c;**用例圖&#xff08;Use Case Diagram&#xff09;和類圖&#xff08;Class Diagram&#xff09;**是兩種最常用的圖表類型&#xff0c;分別用于描述系統的高層功能和靜態結構。以下是它們的核心概念、用途及區別&…

深入解析:HarmonyOS Design設計語言的核心理念

深入解析&#xff1a;HarmonyOS Design設計語言的核心理念 在當今數字化迅速發展的時代&#xff0c;用戶對操作系統的體驗要求越來越高。華為的HarmonyOS&#xff08;鴻蒙操作系統&#xff09;應運而生&#xff0c;旨在為用戶提供全場景、全設備的智慧體驗。其背后的設計語言—…

Vue 類與樣式

數據綁定的一個常見需求場景是操縱元素的 CSS class 列表和內聯樣式。因為 class 和 style 都是 attribute&#xff0c;我們可以和其他 attribute 一樣使用 v-bind 將它們和動態的字符串綁定。但是&#xff0c;在處理比較復雜的綁定時&#xff0c;通過拼接生成字符串是麻煩且易…

Android 中獲取顏色資源

在 Android 開發中&#xff0c;資源&#xff08;如字符串、顏色等&#xff09;通常存儲在 res 文件夾中&#xff0c;并通過資源 ID 進行訪問。資源 ID 是一個整型值&#xff0c;用于唯一標識資源&#xff0c;若需要將資源轉換為整型值&#xff0c;通常是指獲取資源 ID 或從資源…

Linux中的文件尋址

Linux的層級結構 在Linux中一切皆文件 其中 要注意在命令行中看實際選擇寫哪一種路徑 相對路徑 絕對路徑名稱的簡寫&#xff0c;省略了用戶當前所在的系統位置此名稱只有在管理當前所在系統目錄中子文件時才能使用系統中不以/開有的文件名稱都為相對路徑在程序操作時會自動…

洛谷: P1825 [USACO11OPEN] Corn Maze S

原題鏈接:P1825 [USACO11OPEN] Corn Maze S - 洛谷 題目描述 This past fall, Farmer John took the cows to visit a corn maze. But this wasnt just any corn maze: it featured several gravity-powered teleporter slides, which cause cows to teleport instantly from…

探秘DeepSeek:開源AI領域的創新先鋒

一、引言 在人工智能迅猛發展的當下&#xff0c;眾多先進的模型如雨后春筍般涌現&#xff0c;而 DeepSeek 無疑是其中備受矚目的一顆新星。它以獨特的技術優勢和廣泛的應用場景&#xff0c;在 AI 領域嶄露頭角。 二、DeepSeek 的誕生與背景 DeepSeek 由來自廣東省的中國企業…

Spring Boot啟動流程

1. 啟動類與main方法 入口點&#xff1a;Spring Boot應用通常有一個帶有SpringBootApplication注解的主類&#xff0c;并包含一個public static void main(String[] args)方法。 SpringBootApplication是一個組合注解&#xff0c;包含了&#xff1a; Configuration: 標記該類為…