生产消费者同步容器

java多线程同步:生产者与消费者问题 消费者与生产者问题是线程同步里边一个很经典的问题。 用通俗的语言来描述:一群生产者不断的生产产品,并将产品放到一个容器里边;同时一群消费者不断从容器里边消费产品。 容器的容量是有限的。如果容器满了,生产者不能再往容器放产品,必须进入等待状态。等待产品被消费者拿走了,再往容器放产品。 同样,如果容器空了,消费者也必须进入等待状态。等待生产者往里边放产品,再将消费者唤醒。 下边我们来看看如何用 阅读详情

生产消费者同步容器

利用wait(),notifyAll(),方法交替生产和消费容器内变量,利用同步锁实现同步容器

/**
 * @ClassName:MyContainer
 * @Description:TODO使用wait(),notifyAll(),编写生产者消费者容器,get,put方法,2个生产线程
 * 10个消费线程
 * @Author:ZY
 * @Date:2019/6/24 0024 23:23
 * @Version:1.0
 **/
public class MyContainer<T> {
    //非静态容器
    final LinkedList<T> containList = new LinkedList<T>();
    private Integer count = 0;
    private static final Integer MAX = 100;

    public synchronized void put(T t) {
        while (containList.size() == MAX) {
            try {
                this.wait();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        containList.add(t);
        ++count;
        this.notifyAll();
    }

    public synchronized T get() {
        while (containList.size() == 0) {
            try {
                this.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        T t = containList.removeFirst();
        count--;
        this.notifyAll();
        return t;
    }

    public static void main(String[] args) {
        final MyContainer<String> container = new MyContainer<String>();
        for (int i = 0; i < 2; i++) {
            new Thread(new Runnable() {
                public void run() {
                    for (int i1 = 0; i1 < 500; i1++) {
                        container.put(Thread.currentThread().getName() + i1);
                    }
                }
            },"product" + i).start();
        }
        try {
            Thread.sleep(2000);
        } catch (Exception e) {
            e.printStackTrace();
        }
        for (int i = 0; i < 10; i++) {
            new Thread(new Runnable() {
                public void run() {
                    for (int i1 = 0; i1 < 100; i1++) {
                        System.out.println(container.get());
                    }
                }
            },"consumer" + i).start();
        }
    }
}
飞书多维表格+影刀RPA:我如何用3个指令搞定每周的销售数据自动汇总(附完整配置截图) 本文详细介绍了如何利用飞书多维表格和影刀RPA实现销售数据的自动化汇总,通过三个核心指令(建立链接、列出记录、更新记录)简化繁琐的手工操作。文章包含完整的配置截图和实战指南,帮助用户快速部署自动化流程,提升工作效率。 阅读详情

相关推荐

拆解英飞凌CoolGaN:如何用Silvaco TCAD仿真评估功率GaN HEMT的关键性能(BV、Qg、开关损耗)

本文详细解析了如何使用Silvaco TCAD仿真工具评估英飞凌CoolGaN功率GaN HEMT的关键性能指标,包括击穿电压(BV)、栅电荷(Qg)和开关损耗。通过精确建模极化效应、优化边缘终端结构以及高频开关损耗仿真技术,为功率器件工程师提供了一套完整的'设计-仿真-验证'方法论,助力GaN HEMT在快充、数据中心电源等领域的应用。

weixin_29159995的博客 426

同步容器的生产者消费者模式

同步容器的生产者消费者模式 package com.qqjx.thread; /** * 面试题:写一个固定容量同步容器,拥有put和get方法,以及getCount方法, * 能够支持2个生产者线程以及10个消费者线程的阻塞调用 * * 使用wait和notify/notifyAll来实现 * * @author */ import java.util.LinkedList; import java.util.concurrent....

m0_52936310的博客 143

差分信号_差分信号的原理及其在PCB的设计

差分线是 PCB 设计中非常重要的一部分信号线,信号处理要求也是相当严谨,今天为大家介绍下差分信号的原理以及其在 PCB 设计中的处理方法。 什么是差分信号 差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相等,相位相差 180 度,极性相反。在这两根线上传输的信号就是差分...

weixin_31849185的博客 1809

同步容器的生产者消费者模式升级版

同步容器的生产者消费者模式升级版 package com.qqjx.thread; /** * 面试题:写一个固定容量同步容器,拥有put和get方法,以及getCount方法, * 能够支持2个生产者线程以及10个消费者线程的阻塞调用 * * 使用wait和notify/notifyAll来实现 * * 使用Lock和Condition来实现 * 对比两种方式,Condition的方式可以更加精确的指定哪些线程被唤醒 * * @auth...

m0_52936310的博客 111

使用MID360在室内快速定位

在预构建的点云地图中实现实时3D全球定位。通过融合FAST-LIO的低频全局定位(约0.5~0.2Hz)和高频里程计,整个系统的计算效率很高。消除里程计的累计误差初始定位可以通过RVIZ的粗略手动估计或来自另一个传感器/算法的姿势来提供。

CTwinkle的博客 1161

应急响应之windows日志分析工具logparser使用

windows日志分析工具logparser使用介绍

u013930899的博客 8123

写一个固定容量的同步容器,拥有put方法和get方法,以及getCount方法,能够支持2个生产者线程以及10个消费者线程的阻塞调用。

package com.example.demo.test; import java.util.LinkedList; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.uti...

Forest24的博客 735

从零构建HFSS连接器仿真模型:以SMP接口的精准复现为例

本文详细介绍了如何从零构建HFSS连接器仿真模型,以SMP接口的精准复现为例。通过获取官方模型、导入技巧、信号路径提取和介质结构复现等步骤,帮助工程师避免常见错误,提升高频电路仿真的准确性。文章特别强调了模型精度对仿真结果的影响,并提供了实用的调试和管理建议。

weixin_29041767的博客 429

一个固定容量同步容器,有get、put、getCount方法,支持2个生产者,10个消费者阻塞调用

/** *使用lock和condition的方式实现,可更加精确的指定哪些线程被唤醒 */ public class MyContainer<T> { final private LinkedList<T> lists = new LinkedList<>(); final private int MAX = 10;// 最多10个元素 private i...

Harry_123_的博客 529

毫米波雷达IWR1843开箱演示

毫米波雷达IWR1843开箱演示

m0_56120826的博客 7773

STM32F405实战:手把手教你实现永磁同步电机无感FOC控制(附完整工程文件)

本文详细介绍了基于STM32F405微控制器实现永磁同步电机无感FOC控制的完整实战方案。文章从硬件搭建、CubeMX配置入手,逐步讲解了FOC核心算法、SVPWM调制,并重点阐述了如何结合HFI高频方波注入与滑模观测器(SMO)实现全速域无感控制。内容涵盖算法原理、代码实现、参数整定及调试技巧,并附有完整工程文件,为开发者提供从理论到实践的全面指导。

sun99的博客 265

java生产者消费者模型

/** 生成者,消费者,产品,容器 @author Administrator */ public class ProducerConsumer { public static void main(String[] args) { Container ct = new Container();//生成容器 //生产者消费者拥有同一个容器 Producer p = new Produce...

diantu3011的专栏 142

2025数学建模美赛C题完整建模思路——奥运会奖牌榜的模型

2025数学建模美赛C题完整建模思路——奥运会奖牌榜的模型

Yilu264的博客 1万+

C++ 条件变量 生产者消费者模型

基于C++的condition_variable实现的生产者消费者模型,main函数中创建两个线程(生产者和消费者),生产者随机生成一个数字并push_back进容器,消费者则从容器中pop_back一个数,当容器没有数据时,消费者线程挂起,等待生产者线程生产数据并唤醒消费者线程。 #include <iostream> #include <thread> #include...

qq_45329237的博客 1117

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java多线程经典案例之生产者和消费者模型

在java基础中生产者和消费者的案例是不可避免的一个经典问题 要想实现这个经典的案例我们要先了解实现它需要一些什么东西 1.容器:用于存放生产者生产的产品,消费者从中消费商品 2.生产者:不断生产商品,直到容器满了,停止生产。 3.消费者:不断消耗商品,直至容量里的商品为空,停止消费。 4锁:生产者和消费者向容器里添加和删除元素的时候可以同步进行 我们来看实现代码 package P_and_C; /** * Created by Lei on 2020/11/3 9:39 */ import jav

LableFirst的博客 303

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

生产者消费者模式关于 Java 的三种实现

主要参考文章:https://juejin.im/entry/596343686fb9a06bbd6f888c 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。 在设计实现该模式的时候,需要注意以下三个问题: 对容器取产品和添加产品时的同...

一个有思想的搬运工 652

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

生产者和消费者问题

生产者和消费者问题

十年 131

Java生产者消费者

Java生产者消费者

qq_43419887的博客 93

java线程同步:生产者与消费者详细代码

java线程同步实现生产者与消费者原理

Fristadd的博客 309

马士兵生产者消费者

public class ProducerConsumer { public static void main(String[] args) { SyncStack ss = new SyncStack(); Producer p = new Producer(ss); Consumer c = new Consumer(ss); new Thread(p).start

dreamoftch的专栏 1050

Java100-010:多线程的生产者消费者模式实现(管程法):借助缓冲区(容器)

package java02; /** * 我的java每天100行代码010 * 多线程的生产者消费者模式(管程法):借助缓冲区(容器) * wait,notify,notifyAll * @author Administrator * */ public class java010 { public static void main(String[] args) { ...

qq_43356439的博客 452

生产者与消费者(JAVA)

生产者与消费者 先有一个容器,生产者只对容器中添加产品,消费者只对容器中消费产品。 当生产者检测到容器已满,就会进入wait状态,如果未满,则notifyAll来唤醒消费者线程。 当消费者线程检测到容器为空时,进入wait状态,如果不是,则消费,同时nitifyAll。 public class PandC { public static void main(String[] args) { Container container = new Container();

weixin_47389461的博客 196

多线程系列之生产者和消费者

在之前接触过PV操作的,应该对于生产者和消费者的情况有一个了解,这里学到多线程同步的时候,最恰当的一个例子。PV操作就不多做解释。 /** * 生产者和消费者 * @author bobo * */ public class ProducerConsumer { public static void main(String[] args) { SyncStack ss=new

好记性不如烂笔头--玲博小记 565

线程协作生产者和消费者解决方法管程法

package gaoji; //测试生产者消费者模型-->利用缓冲区解决:管程法 public class TestPC { public static void main(String[] args) { Syncontainer container = new Syncontainer(); new Productor(container).start(); new Consumer(container).start();

啊猿的博客 109

多线程与高并发(12)——经典面试题之写一个固定容量同步容器,拥有put和get方法,以及getCount方法,能够支持2个生产者线程以及10个消费者线程的阻塞调用

写一个固定容量同步容器,拥有put和get方法,以及getCount方法,能够支持2个生产者线程以及10个消费者线程的阻塞调用。

liwangcuihua的博客 322

生产者消费者问题

容器: public class SynList { private int index = 0; private static final int MAX = 5; private Wotou []data = new Wotou[MAX]; public synchronized void push(Wotou wotou){ while ...

songhao111111的专栏 158
上一篇: ReenTrantLock简单使用
下一篇: ArrayList集合中替换某一元素
烫手的砖
博客等级 码龄8年 7粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值