網(wǎng)站首頁 編程語言 正文
多線程環(huán)境下,我們經(jīng)常需要多個線程的并發(fā)和協(xié)作。這個時候,就需要了解一個重要的多線程并發(fā)協(xié)作模型“生產(chǎn)者/消費者模式”。
角色介紹
-
什么是生產(chǎn)者?
生產(chǎn)者指的是負責生產(chǎn)數(shù)據(jù)的模塊(這里模塊可能是:方法、對象、線程、進程)。
-
什么是消費者?
消費者指的是負責處理數(shù)據(jù)的模塊(這里模塊可能是:方法、對象、線程、進程)。
-
什么是緩沖區(qū)?
消費者不能直接使用生產(chǎn)者的數(shù)據(jù),它們之間有個“緩沖區(qū)”。生產(chǎn)者將生產(chǎn)好的數(shù)據(jù)放入“緩沖區(qū)”,消費者從“緩沖區(qū)”拿要處理的數(shù)據(jù)。
緩沖區(qū)是實現(xiàn)并發(fā)的核心,緩沖區(qū)的設(shè)置有兩個好處:
-
實現(xiàn)線程的并發(fā)協(xié)作
有了緩沖區(qū)以后,生產(chǎn)者線程只需要往緩沖區(qū)里面放置數(shù)據(jù),而不需要管消費者消費的情況;同樣,消費者只需要從緩沖區(qū)拿數(shù)據(jù)處理即可,也不需要管生產(chǎn)者生產(chǎn)的情況。 這樣,就從邏輯上實現(xiàn)了“生產(chǎn)者線程”和“消費者線程”的分離,解除了生產(chǎn)者與消費者之間的耦合。
-
解決忙閑不均,提高效率
生產(chǎn)者生產(chǎn)數(shù)據(jù)慢時,緩沖區(qū)仍有數(shù)據(jù),不影響消費者消費;消費者處理數(shù)據(jù)慢時,生產(chǎn)者仍然可以繼續(xù)往緩沖區(qū)里面放置數(shù)據(jù) 。
?
原文鏈接:https://blog.csdn.net/m0_73944607/article/details/130672822
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2022-03-20 如何在Go中將[]byte轉(zhuǎn)換為io.Reader_Golang
- 2022-08-19 python如何使用contextvars模塊源碼分析_python
- 2023-03-18 go?sync.Map基本原理深入解析_Golang
- 2022-10-06 Android?Jetpack庫重要組件WorkManager的使用_Android
- 2022-09-20 windows?server2008?R2?角色遷移問題詳解_win服務(wù)器
- 2022-10-21 React封裝全屏彈框的方法_React
- 2023-07-22 JVM的類加載機制和垃圾回收機制
- 2023-02-10 python中的list?查找與過濾方法整合_python
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支