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

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

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


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

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


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


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

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


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


微信图片_20220106175042.png


③. 线程四句口诀 掌握


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

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

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

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

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

标志位



相关文章
|
存储 Java C++
JVM、Java编译器和Java解释器
JVM、Java编译器和Java解释器 java解释器就是把在java虚拟机上运行的目标代码(字节码)解释成为具体平台的机器码的程序。即jdk或jre目录下bin目录中的java.exe文件,而javac.exe是编译器。
1557 0
|
7月前
|
消息中间件 安全 NoSQL
布谷直播系统源码开发实战:从架构设计到性能优化
作为山东布谷科技的一名技术研发人员,我参与了多个直播系统平台从0到1的开发和搭建,也见证了直播行业从萌芽到爆发的全过程。今天,我想从研发角度,分享一些直播系统软件开发的经验和心得,希望能对大家有所帮助。
|
移动开发 小程序 API
uniapp中组件库Mask 遮罩层 的使用方法
uniapp中组件库Mask 遮罩层 的使用方法
1093 1
|
存储 Oracle 关系型数据库
达梦数据库入门语法:从基础到进阶的指南
达梦数据库入门语法:从基础到进阶的指南
2803 2
CentOS cp 复制隐藏文件提示 cp: cannot stat ?.xxx*?. No such file or directory
执行的命令与错误信息: # cp -a /etc/skel/* /home/postgrescp: cannot stat ?.etc/skel/*?. No such file or directory 使用cp复制普通文件时,可以使用 * 号通配符,而在复制隐藏文件时,需要使用.
5054 0
|
SQL 存储 关系型数据库
【面试题精讲】MySQL-执行器
【面试题精讲】MySQL-执行器
|
移动开发 Java 开发工具
大学生相亲网站 毕业设计 JAVA+Vue+SpringBoot+MySQL
大学生相亲网站 毕业设计 JAVA+Vue+SpringBoot+MySQL
315 0
|
数据采集 运维 Ubuntu
|
SQL 关系型数据库 MySQL
mysql目录结构与源码
mysql目录结构与源码
633 0
mysql目录结构与源码
|
机器学习/深度学习 存储 编解码
FFmpeg流媒体处理-收流与推流
流媒体 (streaming media) 是指将一连串的媒体数据压缩后,经过网络分段发送数据,在网络上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件。
2045 0
FFmpeg流媒体处理-收流与推流