- 浏览: 1463590 次
- 性别:
- 来自: 河北邯郸
文章分类
- 全部博客 (246)
- 错误调试 (30)
- 疑难杂症 (8)
- 生活记录 (6)
- 知识积累 (32)
- 博客摘录 (26)
- struts2.1权威指南 (6)
- Linux (37)
- 权限管理 (1)
- DWZ笔记 (1)
- javascript (8)
- Oracle (1)
- spring (8)
- MyBatis (11)
- 项目心得 (6)
- mysql (8)
- easyui (3)
- web前台 (2)
- maven (8)
- sitemash (0)
- 我的吐槽 (4)
- 缓存服务器 (6)
- 算法 (3)
- Intellij (3)
- github (3)
- android (2)
- 系统设计 (1)
- dos bat (1)
- nginx (3)
- nodejs (4)
- freemarker (1)
- mongodb (3)
- 推荐系统 (1)
- redis (7)
- eclipse (1)
- Storm (6)
- 小语言大工具 (1)
- hive (2)
- 大数据架构 (10)
- pig (1)
- ES (4)
- spark (2)
- DMP (1)
- 重新学Java (3)
- Flink (5)
最新评论
-
天台没有爱情:
基于Flink流处理的动态实时电商实时分析系统网盘地址:htt ...
Flink 应用 -
zzz2726:
147-150行:执行出错了引用public User que ...
Spring中jdbcTemplate的用法实例(一) -
18942512863:
Catch you
搞爆storm集群的bug追踪过程 -
商人shang:
u010719892 写道老乡 ,邱县d老相好
Intellij IDEA如何使用Maven Tomcat Plugin运行web项目 -
u010719892:
老乡 ,邱县d
Intellij IDEA如何使用Maven Tomcat Plugin运行web项目
自己在网上搜集了一些资料,然后又根据自己的理解写的,如果有问题,请指出,我将改正
package cn.henu.sjg.producerAndConsumer; import java.util.LinkedList; import java.util.Scanner; /** * 生产者--消费者问题 * @author Shang Jianguo * @2012-12-10 下午9:42:17 */ public class ProducerAndConsumer { private LinkedList<Object> container = new LinkedList<Object>(); // 作为缓冲区 private int MAX = 10; // 缓冲区中商品的最多数量 private boolean isEmpty = true;// 标志缓冲区是否为空 public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入生产者数目:"); int pnum = sc.nextInt(); System.out.println("请输入消费者数目:"); int cnum = sc.nextInt(); ProducerAndConsumer pac = new ProducerAndConsumer(); for(int i=0;i<pnum;i++){ pac.new Producer("生产者" + i).start(); } for(int i=0;i<cnum;i++){ pac.new Consumer("消费者" + i).start(); } } /** * 生产者类 * @author Shang Jianguo * @2012-12-10 下午9:42:36 */ class Producer extends Thread { public Producer(String name) { super(name); } @Override public void run() { while (true) { synchronized (container) { if (isEmpty) {// 缓冲区为空并且没有生产 if (MAX > container.size()) {// 向缓冲区中添加商品 container.add("产品" + container.size()); System.out.println(getName() + "生产了产品--" + container.getLast() ); } isEmpty = false; container.notifyAll(); } else { try {// 没有产品,线程等待 container.notifyAll(); container.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } } /** * 消费者类 * @author shangjianguo */ class Consumer extends Thread { public Consumer(String name) { super(name); } @Override public void run() { while (true) { synchronized (container) { try { container.wait(1000); } catch (InterruptedException e1) { e1.printStackTrace(); } if (!isEmpty) {// 有商品 Object good = container.removeLast(); System.out.println(getName() + " 消费了商品:" + good); if (container.isEmpty()) {// 没有商品了 isEmpty = true; } container.notifyAll(); } else { System.out.println(getName() + ":没有商品了!"); try { container.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } try { sleep(1000); } catch (InterruptedException e2) { e2.printStackTrace(); } container.notifyAll(); } } } } }
发表评论
-
手机精灵-您得力的手机助手
2019-03-25 17:48 15手机精灵致力于打造一款精致的、强大的手机工具应用,像精灵族 ... -
面试,究竟面什么?
2018-09-10 11:41 839在互联网这个行业里面,跳槽是一件极为常见的事情,所以,与之 ... -
程序设计原则
2017-01-04 11:40 1028合理的业务逻辑设计可以避免80%产生的问题,剩下的20%,则 ... -
【转】JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
2015-07-23 15:44 4326摘要 JDK本身提供了很多方便的JVM性能调优监控工具,除 ... -
Java内存泄露监控工具:JVM监控工具介绍【转】
2015-07-22 15:26 18347jstack -- 如果java程序崩溃生成core文件,j ... -
JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释
2015-05-27 14:12 13815jvm区域总体分两类,heap区和非heap区。heap区又 ... -
获取泛型的实例
2015-01-08 13:55 1154Type type = getClass().g ... -
使用google+登录
2014-12-25 12:10 1227详情请参加:https://developers.googl ... -
JavaSocket学习---NIO实现非阻塞的通信
2014-09-17 11:09 7372示例代码见附件:很遗憾,太懒,代码内容还是我分的包,如果你 ... -
Java Socket学习---nio实现阻塞多线程通信
2014-09-12 11:29 4284本次使用nio实现socket客户端和服务端的通信,并且在服 ... -
Java Socket学习---多线程阻塞
2014-09-10 12:44 3281上篇 Java Socket学习---单线程阻塞 这次文 ... -
Java Socket学习---单线程阻塞
2014-09-10 11:51 1977这里首先介绍几个概念:BIO——同步阻塞IO、NIO——同 ... -
使用事件驱动模型实现高效稳定的网络服务器程序
2014-08-28 16:12 1851前言 事件驱动为 ... -
线程相关问题
2014-08-26 14:30 816用图片保存 -
匿名端口的使用
2014-08-25 18:50 1517采用截图的方式如下: -
java socket 实现获取网页内容
2014-08-25 13:48 2122import java.io.BufferedReader; ... -
下载文件设置header的filename要用ISO8859-1编码的原因
2014-08-18 15:52 7613很多情况下,我们在写程序的时候都会把代码设置为UTF-8的编 ... -
自定义以及使用Annotation
2014-07-24 16:40 12811. 什么是Annotation Annotation是 ... -
在word中,怎么插入一条水平线、粗线、波浪线、双直线、虚线
2014-07-04 17:56 2127也许你选择留下一行的 ... -
关于view、controller、service、dao的理解
2013-05-18 10:53 25430最近,越来越对这几层的含义有兴趣,因此,根 ...
相关推荐
1、设计目的:通过研究Linux的进程机制和信号量,实现生产者消费者问题的并发控制。 2、说明:有界缓冲区内设有20个存储单元,放入取出的产品设定为1-20个整数。 3、设计要求: 生产者和消费者进程的数目不固定,可...
记录型信号量通常用于解决生产者-消费者问题,因为它可以记录缓冲池中的空缓冲区和满缓冲区的数量,从而实现生产者和消费者的同步。 解决生产者-消费者问题的方法 为了解决生产者-消费者问题,我们可以使用记录型...
生产者-消费者问题是操作系统中经典的问题之一,它是指在多线程环境下,多个生产者线程和消费者线程访问同一个共享缓冲区,导致缓冲区的数据混乱和不一致的问题。 在解决生产者-消费者问题时,需要使用同步机制来...
在生产者-消费者问题中,可以使用互斥量(mutex)保证缓冲区的独占访问,以及使用条件变量(condition variable)实现生产者等待消费者消费或消费者等待生产者生产。 4. **互斥量**:互斥量用于实现对共享资源的...
生产者-消费者问题是这样设定的:一个或多个生产者线程负责生产数据,而一个或多个消费者线程则负责消费这些数据。两者共享一个有限大小的缓冲区,当缓冲区满时,生产者必须等待消费者消费后才能继续生产;反之,当...
生产者-消费者问题是操作系统中经典的进程同步问题,它模拟了实际生产环境中的资源分配与消耗。在这个问题中,生产者进程负责生成数据并放入有限大小的缓冲区,而消费者进程则从缓冲区取出数据进行消费。为了确保...
生产者-消费者问题是计算机科学中的一个经典同步问题,主要探讨如何在多个进程中有效地共享有限的资源,以防止数据竞争和死锁的发生。在Linux操作系统环境下,这个问题通常通过信号量(semaphore)或管道(pipe)等...
以记录型信号量实现生产者-消费者问题 实验目的: 1.加深对进程同步概念的理解。 2.理解多道程序环境中,不同进程对资源访问及相互合作进程的关系的处理方法。 实验要求: 利用C语言程序模拟生产者-消费者问题和哲学...
1.利用记录型信号量解决生产者-消费者问题.odt1.利用记录型信号量解决生产者-消费者问题.odt1.利用记录型信号量解决生产者-消费者问题.odt
生产者-消费者问题是一个经典的进程同步问题,涉及到两个进程(或线程)——生产者和消费者。生产者负责生产数据项并将其放入一个共享缓冲区,而消费者则从这个缓冲区中取出数据项进行处理。为了保证正确性,需要...
在本场景中,我们关注的是"生产者-消费者模型",这是一个经典的并发问题,通常用于展示线程间的协作与同步。这个模型是基于一个假设:有一个缓冲区,生产者线程负责往里面放入产品,而消费者线程则负责取出并消费...
生产者消费者问题,C++。生产者-消费者(producer-consumer)问题,也称作有界缓冲区(bounded-buffer)问题,两个进程共享一个公共的固定大小的缓冲区。其中一个是生产者,用于将消息放入缓冲区;另外一个是消费者...
《生产者-消费者问题在C++中的实现》 生产者-消费者问题是多线程编程中的经典案例,它展示了如何在并发环境中实现线程间的同步与互斥。在本项目中,我们将探讨这个问题,并以C++语言为基础,创建一个在Windows 2000...
生产者——消费者问题实际上是相互合作进程关系的一种抽象。该类问题不允许消费者进程到一个空缓冲区中取产品,同时也不允许生产者进程到一个已满且还没被取走的缓冲区中投放产品。 使用一个数组来表示具有n个(0,1...
"生产者-消费者"问题是一种经典的多线程同步问题,源于计算机科学中的操作系统领域,用于描述在并发环境中如何协调生产者和消费者之间的操作,确保数据的一致性和避免资源浪费。这个问题的基本设定是有一个共享缓冲...
生产者-消费者问题是这种并发模型的一个经典案例,它涉及到如何在多个线程间共享资源,确保数据的一致性和正确性。在这个场景中,生产者线程负责生成数据并放入一个有限的缓冲区,而消费者线程则负责从缓冲区取出...
生产者-消费者问题是多线程编程中的一个经典同步问题,源于操作系统理论,旨在演示如何在多个线程之间安全地共享有限资源。在这个问题中,"生产者"线程负责生成数据,而"消费者"线程则负责处理这些数据。为了确保...
内容:编程实现生产者-消费者问题的模拟。 基本要求: 1. 生产者消费者对缓冲区进行互斥操作。 2. 缓冲区大小为10,缓冲区满则不允许生产者生产数据,缓冲区空则不允许消费者消费数据。 3. 生产者消费者各循环操作10...
这些API函数在解决生产者-消费者问题时起到了关键作用,它们帮助管理线程的并发行为,确保生产者不会在缓冲区满时继续生产,消费者也不会在缓冲区为空时尝试消费。通过适当的同步机制,可以避免竞争条件和其他并发...