- 浏览: 1451328 次
- 性别:
- 来自: 河北邯郸
文章分类
- 全部博客 (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 773在互联网这个行业里面,跳槽是一件极为常见的事情,所以,与之 ... -
程序设计原则
2017-01-04 11:40 951合理的业务逻辑设计可以避免80%产生的问题,剩下的20%,则 ... -
【转】JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
2015-07-23 15:44 4279摘要 JDK本身提供了很多方便的JVM性能调优监控工具,除 ... -
Java内存泄露监控工具:JVM监控工具介绍【转】
2015-07-22 15:26 18259jstack -- 如果java程序崩溃生成core文件,j ... -
JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释
2015-05-27 14:12 13758jvm区域总体分两类,heap区和非heap区。heap区又 ... -
获取泛型的实例
2015-01-08 13:55 1084Type type = getClass().g ... -
使用google+登录
2014-12-25 12:10 1171详情请参加:https://developers.googl ... -
JavaSocket学习---NIO实现非阻塞的通信
2014-09-17 11:09 7314示例代码见附件:很遗憾,太懒,代码内容还是我分的包,如果你 ... -
Java Socket学习---nio实现阻塞多线程通信
2014-09-12 11:29 4232本次使用nio实现socket客户端和服务端的通信,并且在服 ... -
Java Socket学习---多线程阻塞
2014-09-10 12:44 3230上篇 Java Socket学习---单线程阻塞 这次文 ... -
Java Socket学习---单线程阻塞
2014-09-10 11:51 1936这里首先介绍几个概念:BIO——同步阻塞IO、NIO——同 ... -
使用事件驱动模型实现高效稳定的网络服务器程序
2014-08-28 16:12 1791前言 事件驱动为 ... -
线程相关问题
2014-08-26 14:30 765用图片保存 -
匿名端口的使用
2014-08-25 18:50 1472采用截图的方式如下: -
java socket 实现获取网页内容
2014-08-25 13:48 2060import java.io.BufferedReader; ... -
下载文件设置header的filename要用ISO8859-1编码的原因
2014-08-18 15:52 7550很多情况下,我们在写程序的时候都会把代码设置为UTF-8的编 ... -
自定义以及使用Annotation
2014-07-24 16:40 12311. 什么是Annotation Annotation是 ... -
在word中,怎么插入一条水平线、粗线、波浪线、双直线、虚线
2014-07-04 17:56 2072也许你选择留下一行的 ... -
关于view、controller、service、dao的理解
2013-05-18 10:53 25343最近,越来越对这几层的含义有兴趣,因此,根 ...
相关推荐
1、设计目的:通过研究Linux的进程机制和信号量,实现生产者消费者问题的并发控制。 2、说明:有界缓冲区内设有20个存储单元,放入取出的产品设定为1-20个整数。 3、设计要求: 生产者和消费者进程的数目不固定,可...
用进程同步方法解决“生产者-消费者”问题,C或C++语言实现。 1、设计目的 通过研究进程并发和信号量机制,实现生产者-消费者问题的并发控制。 2、设计要求 1)每个生产者和消费者对有界缓冲区进行操作后,即时显示...
利用记录型信号量解决生产者-消费者问题.doc
以记录型信号量实现生产者-消费者问题 实验目的: 1.加深对进程同步概念的理解。 2.理解多道程序环境中,不同进程对资源访问及相互合作进程的关系的处理方法。 实验要求: 利用C语言程序模拟生产者-消费者问题和哲学...
这是一个操作系统的课程设计 ,关于在linux下用多进程同步方法解决生产者-消费者问题。 有论文和源码
实用互斥量 解决 生产者-消费者 问题。并通过界面的方式展现出来(MFC).
并发控制-生产者-消费者问题实验报告
生产者消费者问题,C++。生产者-消费者(producer-consumer)问题,也称作有界缓冲区(bounded-buffer)问题,两个进程共享一个公共的固定大小的缓冲区。其中一个是生产者,用于将消息放入缓冲区;另外一个是消费者...
内容:编程实现生产者-消费者问题的模拟。 基本要求: 1. 生产者消费者对缓冲区进行互斥操作。 2. 缓冲区大小为10,缓冲区满则不允许生产者生产数据,缓冲区空则不允许消费者消费数据。 3. 生产者消费者各循环操作10...
进程同步模拟设计--生产者和消费者问题 进程调度同步异步
操作系统实验 多线程实现生产者---消费者模型 华工版 绝对好用。。。。。。。
生产者——消费者问题实际上是相互合作进程关系的一种抽象。该类问题不允许消费者进程到一个空缓冲区中取产品,同时也不允许生产者进程到一个已满且还没被取走的缓冲区中投放产品。 使用一个数组来表示具有n个(0,1...
用多线程同步方法解决生产者-消费者问题(操作系统课设
生产者-消费者问题描述的是:有一群生产者进程在生产产品,并将这些产品提供给消费者进程去消费。为使生产者进程与消费者进程能够并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池,生产者进程将它所生产的产品...
在 Ubuntu 下编写程序,用信号量解决生产者-消费者问题 在 Ubuntu 下编写应用程序 pc.c,解决经典的生产者-消费者问题,完成下面的功能: 建立一个生产者进程,N 个消费者进程(N > 1) 用文件建立一个共享缓冲区 生产...
这是一个在linux系统下用多进程同步的方法解决消费者-生产者问题的源代码,是关于操作系统的。
并发控制-生产者-消费者问题
1.每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、当前指针位置和生产者/消费者线程的标识符; 2.生产者和消费者各有两个以上; 3.多个生产者或多个消费者之间须共享对缓冲区进行...
1.利用记录型信号量解决生产者-消费者问题.odt1.利用记录型信号量解决生产者-消费者问题.odt1.利用记录型信号量解决生产者-消费者问题.odt
1、设计目的:通过研究Linux的进程同步机制和信号量,实现生产者消费者问题的并发控制。 2、说明:有界缓冲区内设有20个存储单元,放入取出的产品设定为20个100以内的随机整数。 3、设计要求: 1) 生产者与消费者均...