Juc02_Synchronized、ReentrantLock实现生产者和消费者问题(一)

简介: ①. 生产者和消费者模式概述

①. 生产者和消费者模式概述


①. 生产者消费者模式是一个十分经典的多线程协作的模式,弄懂生产者消费者问题能够让我们对多线程编程的理解更加深刻。所谓生产消费者问题,实际上主要是包含了两类线程:

一类是生产者线程用于生产数据


一类是消费者线程用于消费数据


②. 为了耦合生产者和消费者的关系,通常会采用共享的数据区域,就像一个仓库

生产者生产数据之后直接放置在共享数据区中,并不需要关心消费者的行为


消费者只需要从共享数据区中获取数据,并不需要关心生产者的行为


微信图片_20220106175042.png


③. 线程四句口诀 掌握


在高内聚低耦合的前提下,线程 - >操作 - >资源类

[假如有一个空调,三个人去操作这个空调,高内聚低耦合是指空调有制热制冷的效果,它会把这两个抽取成一个方法,对外以接口的形式去暴露,提供给操作空调的人或线程使用]

判断|操作|唤醒 [ 生产消费中 ]

多线程交互中,必须要防止多线程的虚假唤醒,也即(判断使用while,不能使用if)

(Java多线程中的虚假唤醒和如何避免)

标志位



相关文章
|
6月前
|
存储 Java
AQS(AbstractQueuedSynchronizer,队列同步器)源码解读
AQS(AbstractQueuedSynchronizer,队列同步器)源码解读
|
5月前
|
并行计算 安全 Go
可重入锁实现消费者和生产者的例子
【6月更文挑战第28天】本文探讨了Python和Go中使用可重入锁(RLock)进行线程同步以及异步操作。异步存取示例展示了goroutine的并发优势,启动简单且运行异步。goroutine的调度和并发处理能力是其高效并发的关键。
30 0
可重入锁实现消费者和生产者的例子
|
6月前
|
存储 设计模式 算法
队列同步器AQS-AbstractQueuedSynchronizer 原理分析
队列同步器AQS-AbstractQueuedSynchronizer 原理分析
95 0
|
存储 消息中间件 算法
JUC-阻塞队列
问题引出 一.单端阻塞队列(BlockingQueue) 二.双端阻塞队列(BlockingDeque) 三.延迟队列(DelayQueue)
50 0
生产者消费者问题(生产者和消费者都阻塞于同一把锁this锁)
生产者消费者问题(生产者和消费者都阻塞于同一把锁this锁)
|
存储 缓存 安全
JUC之阻塞队列解读(BlockingQueue)
JUC之阻塞队列解读(BlockingQueue)
JUC学习(一):synchronized的介绍及使用(实现多线程卖票)
JUC学习(一):synchronized的介绍及使用(实现多线程卖票)
|
存储 SpringCloudAlibaba 前端开发
JUC系列(五) 读写锁与阻塞队列
阻塞队列和读写锁 都是很有作用的多线程工具 有所了解 在需要的时候也可以投入到业务中使用
JUC系列(五)  读写锁与阻塞队列
|
存储 前端开发 安全
【JUC并发编程】 详解锁与队列
【JUC并发编程】 详解锁与队列
141 0
【JUC并发编程】 详解锁与队列