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

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

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


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

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


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


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

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


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


微信图片_20220106175042.png


③. 线程四句口诀 掌握


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

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

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

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

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

标志位



相关文章
|
7月前
|
存储 Java
AQS(AbstractQueuedSynchronizer,队列同步器)源码解读
AQS(AbstractQueuedSynchronizer,队列同步器)源码解读
|
资源调度
JUC并发编程之同步器(Semaphore、CountDownLatch、CyclicBarrier、Exchanger、CompletableFuture)附带相关面试题
1.Semaphore(资源调度) 2.CountDownLatch(子线程优先) 3.CyclicBarrier(栅栏) 4.Exchanger(公共交换区) 5.CompletableFuture(异步编程)
183 0
|
7月前
|
安全 Java API
多线程(JUC, ReentrantLock, 原子类, 线程池, 信号量 Semaphore, CountDownLatch)
多线程(JUC, ReentrantLock, 原子类, 线程池, 信号量 Semaphore, CountDownLatch)
58 4
|
7月前
|
Java
JUC 常用 4 大并发工具类 CountDownLatch、CyclicBarrier、Semaphore、ExChanger
JUC 常用 4 大并发工具类 CountDownLatch、CyclicBarrier、Semaphore、ExChanger
|
7月前
|
存储 设计模式 算法
队列同步器AQS-AbstractQueuedSynchronizer 原理分析
队列同步器AQS-AbstractQueuedSynchronizer 原理分析
102 0
|
存储 消息中间件 算法
JUC-阻塞队列
问题引出 一.单端阻塞队列(BlockingQueue) 二.双端阻塞队列(BlockingDeque) 三.延迟队列(DelayQueue)
51 0
生产者消费者问题(生产者和消费者都阻塞于同一把锁this锁)
生产者消费者问题(生产者和消费者都阻塞于同一把锁this锁)
|
JavaScript 小程序 Java
JUC多线程:CountDownLatch、CyclicBarrier、Semaphore 同步器原理 上
JUC多线程:CountDownLatch、CyclicBarrier、Semaphore 同步器原理 上
|
消息中间件 JavaScript 小程序
JUC多线程:CountDownLatch、CyclicBarrier、Semaphore 同步器原理 下
JUC多线程:CountDownLatch、CyclicBarrier、Semaphore 同步器原理 下
|
算法 Java API
【JUC】交换器Exchanger详解
【JUC】交换器Exchanger详解
139 0
【JUC】交换器Exchanger详解