- 浏览: 1110966 次
文章分类
- 全部博客 (379)
- S2SH (16)
- stuts2 (0)
- java语言 (81)
- JSP (17)
- <html>元素 (11)
- javaweb (4)
- web容器 (3)
- ext (23)
- javaScript (48)
- ant (1)
- liferay (1)
- sql (9)
- css (42)
- 浏览器设置 (3)
- office_world (1)
- eclipse (4)
- 其它 (28)
- 操作系统 (5)
- android (6)
- Struts2 (11)
- RegEx (3)
- mysql (5)
- BigDATA (1)
- Node.js (1)
- Algorithm (10)
- Apache Spark (1)
- 数据库 (5)
- linux (2)
- git (1)
- Adobe (3)
- java语言,WebSocket (1)
- Maven (3)
- SHELL (1)
- XML (2)
- 数学 (2)
- Python (2)
- Java_mysql (1)
- ReactJS (6)
- 养生 (4)
- Docker (1)
- Protocols (3)
- java8 (2)
- 书籍 (1)
- Gradle (2)
- AngularJS (5)
- SpringMVC (2)
- SOAP (1)
- BootstrapCSS (1)
- HTTP协议 (1)
- OAuth2 (1)
最新评论
-
Lixh1986:
Java并发编程:自己动手写一把可重入锁https://blo ...
Java之多线程之Lock与Condition -
Lixh1986:
http://win.51apps.com.cn/https: ...
temp -
ztwsl:
不错,支持很好
HttpServletRequest和ServletRequest的区别 -
guodongkai:
谢谢您能将知识精华汇编总结,让初学者们从原理中学会和提高。
javaScript之function定义 -
kangwen23:
谢谢了,顶顶
struts2中的ValueStack学习
尚学堂—马士兵-java系列网上免费视频教程
知识点:
1.Thread.sleep();
2.Runnable接口
3.Object.wait()
4.Object.notify();
5.if 和 While 的区别
6.synchronized 关键字
ProducerConsumer.java
(
1.其实,编译后会生成5个class文件。但只需运行 ProducerConsumer.class即可。
2.如果想在你的console中显示中文,请将.java文件的编码设为GB2312
)
--
知识点:
1.Thread.sleep();
2.Runnable接口
3.Object.wait()
4.Object.notify();
5.if 和 While 的区别
6.synchronized 关键字
ProducerConsumer.java
(
1.其实,编译后会生成5个class文件。但只需运行 ProducerConsumer.class即可。
2.如果想在你的console中显示中文,请将.java文件的编码设为GB2312
)
/** * 【生产者与消费者】 * * 注意: * 1、在使用wait()时,wait()最好写在while中。不要写在if else中。 * 2、wait()语句只能使用在synchronized语句中,用于使synchronize释放对其内部对象的锁定。 * 3、只要使用了wait(),在while外面一定要用notify();用于通知其它线程可以执行了。 * */ 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(); new Thread(c).start(); } } class Wotou { int id; Wotou(int id){ this.id = id; } @Override public String toString(){ return "Wotou: " + id; } } class SyncStack{ int index = 0; Wotou[] arrWt = new Wotou[6]; public synchronized void push(Wotou wt){ while(index == arrWt.length){ try{ this.wait(); }catch(InterruptedException e){ e.printStackTrace(); } } this.notify(); arrWt[index] = wt; index ++; } public synchronized Wotou pop(){ while(index == 0){ try{ this.wait(); }catch(InterruptedException e){ e.printStackTrace(); } } this.notify(); index --; return arrWt[index]; } } class Producer implements Runnable{ SyncStack ss = null; Producer(SyncStack ss){ this.ss = ss; } public void run(){ for(int i=0;i<20;i++){ Wotou wt = new Wotou(i); ss.push(wt); System.out.println("生产了:"+ wt); try{ Thread.sleep(500); }catch(InterruptedException e){ e.printStackTrace(); } } } } class Consumer implements Runnable{ SyncStack ss = null; Consumer(SyncStack ss){ this.ss = ss; } public void run(){ for(int i=0;i<20;i++){ Wotou wt = ss.pop(); System.out.println("消费了:"+wt); try{ Thread.sleep(500); }catch(InterruptedException e){ e.printStackTrace(); } } } }
--
发表评论
-
java 将文件夹所有的文件合并到指定的文件夹下
2020-06-30 19:17 1055场景:将文件夹所有的文件合并到指定的文件夹下 另外:如果想效 ... -
多线程-线程池的四种创建方式
2020-04-01 18:38 481多线程-线程池的四种创建方式 https://blog.cs ... -
Java基础之:nio
2019-11-13 15:38 477一、理论讲解: 史上最强Java NIO入门:担心从入门到放弃 ... -
Java 分布式之:RPC 基本概念
2019-11-13 15:07 454转载: https://www.jianshu.com/p/ ... -
Java之 volatile 关键字原理详解
2019-11-07 15:36 543一、什么是 volatile ? ... -
POI实现excell批注背景图片(仿html浮窗显示图片)
2019-10-21 08:17 681POI实现excell批注背景图片(仿html浮窗显示图片) ... -
Java之设计模式之 Observer 观察者
2019-07-04 17:21 1063观察者设计模式 Java 已经实现了该模式,并且提供了使用类 ... -
HashMap, LinkedHashMap and TreeMap
2019-03-01 11:04 673https://stackoverflow.com/a/177 ... -
Java lib 操作 excel 插入图片
2019-01-19 12:46 878https://poi.apache.org/componen ... -
数据库连接池C3P0
2018-05-29 16:50 890一、名字的由来 很多 ... -
Java8之集合(Collection)遍历 forEach()、stream()
2018-05-29 14:39 20744package java8.collections; ... -
Junit Vs main on "java.util.concurrent.Executors"
2017-11-10 16:44 807Same code with different result ... -
Java之大数据学习路线
2017-11-03 10:08 5720三个月大数据研发学习 ... -
Java中创建对象的5种方式
2017-10-26 14:21 839一、Java之5种创建对象的方式 ————————————— ... -
Log4j和Slf4j的比较
2017-06-23 12:41 1406一直搞不清 Log4j 和 SLF4j 的关系。今天才若有所 ... -
Java之Java7新特性之try资源句式
2017-04-20 14:58 5383Java之Java7新特性之try资源句式 一、【try资源 ... -
Java之 java.util.concurrent 包之ExecutorService之submit () 之 Future
2017-03-04 21:27 3834一、如何使用 ExecutorService.submit() ... -
Java之 java.util.concurrent 包之Executor与ExecutorService
2017-03-04 21:18 2702一、问题: execute() 与 submit() 的区别? ... -
JAVAEE之单用户登录
2017-02-05 11:55 1058单用户登录是系统中数据一直性的解决方案之一。 问题背景: 试 ... -
Java之多线程之线程池之线程重复使用
2017-02-04 13:33 5565一、问题背景 在使用多线程时,如果要开启一个任务,则就需要新 ...
相关推荐
- **理解进程同步**:通过编程模拟生产者-消费者进程,深入理解进程之间的同步与互斥机制。 - **分析资源竞争现象**:观察并分析当多个进程尝试访问同一资源时可能出现的竞争情况,学习如何有效地解决这些问题。 ##...
a: 创建一个线程 ...h: problem1 生产者消费者问题 (1生产者 1消费者 1缓冲区) problem1 more 生产者消费者问题 (1生产者 2消费者 4缓冲区) problem2 读者与写着问题 I: 信号量 semaphore 解决线程同步问题
1、设计目的:通过研究Linux的进程同步机制和信号量,实现生产者消费者问题的并发控制。 2、说明:有界缓冲区内设有20个存储单元,放入取出的产品设定为20个100以内的随机整数。 3、设计要求: 1) 生产者与消费者均...
- 使用线程来模拟生产者和消费者的行为,每个线程代表一个实体,可以独立执行任务。 - 通过互斥锁保证在同一时刻只有一个线程能访问缓冲区,防止数据冲突。 - 利用信号量来控制缓冲区的满和空状态,当缓冲区满时...
"P_C_Dll"可能是生产者-消费者问题的动态链接库(DLL)文件,这个库文件可能封装了生产者和消费者线程的逻辑。而"P_C"可能是包含生产者和消费者线程的源代码文件夹。 在编程实现时,需要注意以下几点: 1. **同步...
在这个实验报告中,学生通过编写`producers-consumers.c`源代码,实现了生产者-消费者问题的模拟。这个C程序可能使用了如互斥锁(Mutex)、信号量(Semaphore)等机制来实现线程间的同步。互斥锁用于确保任何时候...
Java多线程中的生产者-消费者模式是一种典型的同步与协作模型,它用于解决在多线程环境下资源的有效利用和协调问题。在这个模式中,通常有两个角色:生产者和消费者。生产者负责创建产品,而消费者则负责消费这些...
在本项目中,我们将探讨这个问题,并以C++语言为基础,创建一个在Windows 2000环境下运行的控制台应用程序,通过多线程模拟生产者和消费者的行为。 首先,我们要理解生产者-消费者模型的基本概念。在这个模型中,...
### 多进程同步解决生产者消费者问题(C++源码解析) #### 一、问题背景与定义 生产者-消费者问题是一种经典的并发编程问题,它最初由Edsger Dijkstra提出,用来展示信号量机制的应用场景。在这个问题中,存在两类...
一组生产者进程生产产品给一组消费者进程消费。一个有n个缓冲区的缓冲池,生产者一次向一个缓冲区中投入消息,消费者从一个缓冲区中取得。生产者——消费者问题实际上是相互合作进程关系的一种抽象。该类问题不允许...
生产者/消费者模型是多线程编程中的一个经典设计模式,它有效地利用了资源,避免了数据竞争和阻塞问题。这个模型的核心思想是将生产者和消费者分隔开,使得生产者可以专注于创建产品,而消费者则专注于消耗这些产品...
操作系统课程设计中的“生产者-消费者”模型是一个经典的多线程同步问题,它模拟了实际生产环境中的资源分配与消耗过程。在这个模型中,“生产者”代表产生数据的实体,而“消费者”则是处理这些数据的实体。在Linux...
生产者消费者模型是一种经典的线程同步问题,它模拟了实际生活中的生产过程和消费过程,使得生产者线程可以将数据生产出来,而消费者线程则负责消耗这些数据,两者之间通过共享数据结构进行协同工作。 生产者消费者...
生产者消费者问题是多线程编程中的一个经典案例,它展示了如何通过线程间的协作来解决资源的并发访问问题。在C#中,我们可以利用System.Threading命名空间提供的工具来实现这一模型。下面将详细阐述这个问题的背景、...
在这个“pandc.rar”压缩包中,包含的可能是某个开发者自编的生产者-消费者模型的源代码或实验报告,用于模拟实际的生产环境。 生产者-消费者问题的基本情景是这样的:一个系统中有两个角色,即生产者和消费者。...
以下是对"Linux C"环境下,利用多进程或多线程实现生产者/消费者问题的详细解释: 首先,我们需要了解基础概念: 1. **多进程**:在Linux系统中,每个进程都有自己的独立内存空间,它们之间的通信通常通过文件、...
通常,这种情况下会使用循环、条件变量或者状态标志等方法来模拟生产者和消费者的交替执行。例如,生产者在生成数据后会设置一个状态标志,然后切换到消费者状态;消费者在消费完数据后会改变状态标志,再切换回生产...
参考教材中的生产者消费者算法,创建5个进程,其中两个进程为生产者进程,3个进程为消费者进程。一个生产者进程试图不断地在一个缓冲中写入大写字母,另一个生产者进程试图不断地在缓冲中写入小写字母。3个消费者...
在Windows2000环境下,创建一个控制台进程,在此进程中创建n个线程来模拟生产者或者消费者。这些线程的信息由本程序定义的“测试用例文件”中予以指定。 该文件的格式和含义如下: 3 1 P 3 2 P 4 3 C 4 1 4 P 2 5 C ...
例如,在`Test.java`文件中,我们可能会定义两个`Semaphore`对象,分别代表空槽和满槽,然后在生产者和消费者线程的代码中使用`acquire()`和`release()`方法来控制对缓冲区的访问。 此外,还需要注意避免死锁的发生...