java线程之生产者消费者

Java多线程之生产者与消费者 随着软件业的发展,互联网用户的日渐增多,并发这门艺术的兴起似乎是那么合情合理。每日PV十多亿的淘宝,处理并发的手段可谓是业界一流。用户访问淘宝首页的平均等待时间只有区区几秒,但是服务器所处理的流程十分复杂。首先负责首页的服务器就有好几千台,通过计算把与用户路由最近的服务器处理首页的返回。其次是网页上的资源,就JS和CSS文件就有上百个,还有图片资源等。它能在几秒内加载出来可见阿里几千名顶尖工程师的智慧是如何登峰造极。... 阅读详情
package test;

public class ThreadTest {

	public static void main(String args[]){
		Resource r = new Resource();
		Product p = new Product(r);
		Consume c = new Consume(r);
		Thread tp = new Thread(p);
		Thread tc = new Thread(c);
		tp.start();
		tc.start();
		
	}
	
}

/**
 * 数据源
 * @author 郭胜
 *
 */
class Resource{
	private String name;
	private int count;
	boolean flag = true;//如果是真,则生产,如果是假,则消费
	
	/**
	 * 生产
	 * @param name
	 */
	public synchronized void product(String name){
		if(flag){
			this.name = name;
			++count;
			System.out.println(Thread.currentThread().getName()+"生产了"+name+"……"+count);
			flag = false;
			notify();
			try {
				wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		
	}
	
	/**
	 * 消费
	 */
	public synchronized void consume(){
		if(!flag){
			System.out.println(Thread.currentThread().getName()+"消费了……"+name+"……"+count);
			flag = true;
			notify();
			try {
				wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

/**
 * 生产类
 * @author 郭胜
 *
 */
class Product implements Runnable{
	
	private Resource resource;
	public Product(Resource resource){
		this.resource = resource;
	}
	
	
	public void run() {
		while(true){
			resource.product("面包");
		}
	}
	
}

class Consume implements Runnable{
	private Resource resource;
	public Consume(Resource resource){this.resource = resource;}
	
	public void run() {
		while(true){
			resource.consume();
		}
	}
	
}

Java多线程:生产者消费者模型 一类是生产者线程用于生产数据一类是消费者线程用于消费数据为了解耦生产者和消费者的关系,通常会采用共享的数据区域,就像是一个仓库生产者生产数据之后直接放置在共享数据区中,并不需要关心消费者的行为消费者只需要从共享数据区中去获取数据,并不需要关心生产者的行为我们来看一个经典案例,可经典了,上课学,代码学,很多地方都会学到。... 阅读详情

相关推荐

保姆级教程:用高云GW2A开发板搭建RISC-V软核处理器(含DDR3内存优化配置)

本文提供了一份详细的保姆级教程,指导开发者使用高云GW2A-LV18PG256C8 FPGA开发板搭建RISC-V软核处理器系统。教程涵盖了从开发环境搭建、PicoRV32软核集成,到关键的DDR3内存控制器配置与优化,并深入讲解了时序约束与系统调试方法,帮助初学者和爱好者实现从逻辑设计到软硬件协同的深度实践。

2a4s6d8f0g的博客 566

Java中的生产者/消费者模型

生产者-消费者模型(Producer-Consumer problem)是一个非常经典的多线程并发协作的模型。比如某个模块负责生产数据,而另一个模块负责处理数据。产生数据的模块就形象地被称为生产者;而处理数据的模块,则被称为消费者。生产者和消费者在同一段时间内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。

u010257931的博客 6812

SAP 货币类型和公司代码的货币设置

货币类型分为公司代码和集团货币,一般FI 10类型和集团货币 30,事务代码是8KEM; 设置货币类型的事务代码是OB22 在S/4 1809版本里编辑功能统合到事务代码FINSC_LEDGER 中了,这里集中了分类账和公司代码的设置; 设置多账簿的币种(会出现在BSEG和FAGLFLEXA表中) 汇率维护在TCURR表中,可通过BAPI_EXCHANGERATE_GETDETAIL函数获取。 CO货币的事务代码是成本控制范围货币:OKKP ,一般设置为货币码20和30; 另外, SCC4设置集团货币,

RichardYang2020的博客 1万+

Java多线程08——生产者/消费者模式

多线程环境下,我们经常需要多个线程的并发和相互通信。其中,有一个重要的多线程并发协作模型,即“生产者/消费者模式”。生产者负责生产数据的模块,可以是方法、对象、线程或进程。消费者负责处理数据的模块,可以是方法、对象、线程或进程。缓冲区消费者不能直接使用生产者的数据,在生产者和消费者之间有一个“缓冲区”。生产者将生产好的数据和内容放入“缓冲区”,消费者从“缓冲区”中取走要处理的数据。实现线程的并发协作设置缓冲区后,生产者线程只需要向缓冲区里面放入数据,而不需要去查看消费者消费的情况;

QQ156881887的专栏 1315

Mac Studio M5 Ultra本地部署大模型实战:从内存原理到Ollama开发工作流

大模型推理的性能瓶颈往往不在算力,而在于内存能否装下整个模型、带宽能否持续供得上。Transformer架构每生成一个token都需要把权重完整扫一遍,决定了这本质上是内存密集型任务——统一内存架构因此成为本地部署的关键通路,超大容量与高带宽并行,让“装得下”和“跑得快”同时成立。模型量化技术(如Q4_K_M)则是另一项决定性软件策略,用轻微精度损失换取更低的硬件门槛,也是Ollama本地部署从7B到70B各类模型必做的前置功课。当本地推理服务跑起来后,借助VS Code等开发工具的OpenAI兼容API接

weixin_29043895的博客 446

Springboot + vue 实现导出word

Springboot + vue 实现导出word 后端代码 使用word先创建好已知的模板 使用word工具另存为.xml格式的文件 使用freemarker ftl模板 将修改后的xml文件复制到开发工具中,将文件后缀修改为ftl文件,并且将里面的动态值使用${}包裹例如:${zyjn} word工具类 /*** * * Project Name:maventest * <p>生成word工具类<br> * * @ClassName: WordUtil *

qq_45542373的博客 2895

【Java 基础篇】Java 生产者-消费者模式详解

生产者-消费者模式是一种经典的多线程设计模式,用于解决多个线程之间的数据共享和协作问题。在生产者-消费者模式中,有两类线程:生产者线程和消费者线程。它们之间通过共享一个缓冲区(或队列)来协作,生产者将数据放入缓冲区,消费者从缓冲区取出数据并进行处理。生产者-消费者模式的主要目标是实现生产者和消费者之间的解耦,使它们可以独立地进行工作,从而提高系统的性能和可维护性。首先,我们定义一个有界缓冲区,使用来实现,它是 Java 并发包中提供的一个有界队列。} }} }} }

繁依Fanyi的博客 2555

LLaMA-Factory微调教程5:多模态VLM模型对话

视觉-语言模型(VLM)概述与应用 视觉-语言模型(VLM)是一类结合视觉和语言信息的人工智能模型,旨在实现跨模态的理解与交互。其核心目标包括跨模态理解和生成能力,关键技术涉及模态表示与映射、多模态预训练以及跨模态交互机制。 典型VLM模型包括: CLIP:通过对比学习实现图像和文本的向量空间对齐 BLIP:结合自监督和弱监督学习提升语义对齐 ALBEF:基于BERT结构扩展跨模态注意力 DALL-E系列:基于文本生成图像的生成式模型 CLIP4Clip:扩展CLIP到视频领域 VLM在图像/视频检索、视觉

Cachel Wood的博客 1114

Java多线程(实现多线程、线程同步、生产者消费者)

概述生产者消费者模式是一个十分经典的多线程协作的模式,弄懂生产者消费者问题能够让我们对多线程编程的理解更加深刻。所谓生产者消费者问题,实际上主要是包含了两类线程:​ 一类是生产者线程用于生产数据​ 一类是消费者线程用于消费数据为了解耦生产者和消费者的关系,通常会采用共享的数据区域,就像是一个仓库生产者生产数据之后直接放置在共享数据区中,并不需要关心消费者的行为消费者只需要从共享数据区中去获取数据,并不需要关心生产者的行为Object类的等待和唤醒方法方法名说明。

yqqの博客 626

30分钟用 Restful ABAP Programming(RAP)模型开发一个支持增删改查的 Fiori 应用

2016年时,Jerry曾经写过一系列关于SAP Fiori Smart Template(现在更名为Fiori Elements了)的博客,介绍了所谓的MDD开发方法论 - Metadata Driven Development,即通过开发维护了对应annotation(注解)的CDS view,结合SAP WebIDE,能够花费最少的编程代价,就能够在短时间内获得一个支持增删改查的Fiori应......

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5951

LLC设计指南(一)第一章:别一上来就背公式,先把 LLC 的“脾气”摸清楚

很多工程师第一次学 LLC,都会有一种感觉:这个电源拓扑,好像不是在工作,而是在“跳舞”。Buck 很直观,开关一开,电感充电;开关一关,电感放电。Flyback 也好理解,先存能量,再把能量丢给副边。但 LLC 不一样。它不是硬邦邦地把能量“推过去”,而是让电感、电容、变压器一起形成一个谐振网络,让能量在里面来回摆动。控制器再通过调节开关频率,把这个摆动过程“驯服”成稳定输出。这也是 LLC 最迷人的地方:🎯。

weixin_43199439的博客 317

JAVA多线程中的消费者生产者

面试题如何控制线程的执行顺序,生产者消费者问题

maxker的博客 1707

YOLOv11全网首发:注意力独家魔改 | 具有切片操作的SimAM注意力,魔改SimAM助力小目标检测

1)直接作为注意力使用,效果秒杀SimAM;2)高效和卷积结合,代替原始网络的卷积操作;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1571

Java——线程之生产者消费者

Java——线程之生产者消费者一、生产者消费者模式概述二、生产者消费者案例 一、生产者消费者模式概述 生产者消费者模式是一个经典的多线程协作的模式。生产者消费者问题主要包含两类线程: 生产者线程:生产数据 消费者线程:消费数据 为了解耦生产者和消费者的关系,通常会采用共享的数据区域,就像是一个仓库: 生产者生成数据后直接放置在共享数据区中,并不需要关心消费者的行为 消费者只需要从共享数据区中去获取数据,并不需要关心生产者的行为 为了体现生产和消费过程中的等待和唤醒,Java提供了几个方法,这几个方

smile4548656的博客 1634

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

java多线程 消费者-生产者

java多线程一般都会讲消费者-生产者模型生产者与消费者模型中,要保证以下几点:1 同一时间内只能有一个生产者生产2 同一时间内只能有一个消费者消费3 生产者生产的同时消费者不能消费4 消息队列满时生产者不能继续生产5 消息队列空时消费者不能继续消费参考了下网上一个代码实例http://www.talented.com.cn/archives/2007/5/16_141.html  发现作

bnuchampion的专栏 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java多线程——消费者与生产者的关系

消费者:

weixin_37910098的博客 1099

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java多线程——生产者消费者模型

文章目录生产者消费者产品测试代码测试结果 ​ 多线程同步的经典模型,当初上操作系统时,老师拿这个模型讲解信号量同步机制,可惜C的信号量太难,实验课也是拿助教不知道哪里找的代码跑了跑,一直没有自己实现生产者消费者模型 ​ 如今正在学习java的多线程,准备用经典的生产者消费者实践一下 生产者 package example; import java.util.Random; public c...

IuSpet的博客 345

java 线程 生产者与消费者_浅谈java线程中生产者与消费者的问题

一、概念生产者与消费者问题是一个金典的多线程协作的问题.生产者负责生产产品,并将产品存放到仓库;消费者从仓库中获取产品并消费。当仓库满时,生产者必须停止生产,直到仓库有位置存放产品;当仓库空时,消费者必须停止消费,直到仓库中有产品。解决生产者/消费者问题主要用到如下几个技术:1.用线程模拟生产者,在run方法中不断地往仓库中存放产品。2.用线程模拟消费者,在run方法中不断地从仓库中获取产品。3....

weixin_31119637的博客 278

java生产者、消费者—线程安全

1、产品 /** * 产品 * Created by hgg on 2019/9/29. */ public class Product { private String name; public Product(String name) { this.name = name; } public String getNa...

hgg923的专栏 936

java中多线程生产者、消费者问题

java中多线程生产者、消费者问题 代码: package com.thread.java; /** * 线程通信的应用:经典例题:生产者/消费者问题 * * 生产者(Productor)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品, * 店员一次只能持有固定数量的产品(比如:20),如果生产者试图生产更多的产品,店员 * 会叫生产者停一下,如果店中有空...

仰望与追逐的博客 300

Java多线程实现生产者消费者(简易版)

生产者消费者问题

weixin_51955084的博客 2654

java 生产者 消费者 线程池_java生产者与消费者和线程池

Java线程生产者消费者模式与线程池首先先简单地介绍一下生产者消费者模式:例如学到的知识Teacher(上课讲知识,造知识)=========(知识)>>Student(学生学习知识,用知识)这就是简单的生产者消费者模式下面来介绍一个示例来学习此概念有一个类似Hibernate的SessionFactory工厂MakeSessionFactory为造工厂,GetSessionFacto...

weixin_42497839的博客 466

java 线程生产者,java线程生产者与消费者

复习java线程,然后实现生产者与消费者问题,4个文件代码如下:1.生产者:/*** producer.java* xmlanalysis* 2011-8-26*/package com.lyjilu.thread;import java.util.List;/*** @author dawn.liu 2011-8-26 上午10:54:22*/public class Producer exte...

weixin_42511206的博客 153

JAVA 多线程 消费者与生产者经典案例

生产者和消费者是Java多线程里面的一个经典的案例,就跟多窗口同步售票一样。代码如下:import java.util.ArrayList; public class Producer extends Thread {//生产者 //仓库 ArrayList&lt;String&gt; list = new ArrayList&lt;String&gt;(); //通过构造赋值 pu...

Alaunitas的博客 747

java多线程之~生产者消费者

文章目录一、怎样使用多线程二、生产者消费者 一、怎样使用多线程 一般来讲我们创建多线程的方式有一下几种: 1. 实现Runnable接口 并重写其中的run方法 2. 继承Thread类,重写run方法 3. 使用线程池(有返回值) 4. 实现Callable接口,重写call方法 这里是案例, 二、生产者消费者 面包类 package org.neon.learn.duoxiancheng; /** * 生产者消费者 案例 * 面包类 */ public class Bread {

生命不息、战斗不止! 243

java线程之生产者与消费者

预习java线程的三种创建方式 package com.bj.thread; import java.util.concurrent.*; /** * @FileName: TestThread * @Remark: * @Author * @Date 2022-03-14 * @Version 1.0.0 */ class TestMain{ public static void main(String[] args) { // 第一种开启线程方法(静态代理的模

qq_30347133的博客 540
上一篇: java线程锁死小demo
下一篇: 面试题:用table显示n条记录,样式要求,每隔三行换一种颜色
郭胜_自强
博客等级 码龄11年 9粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值