- 浏览: 1090814 次
文章分类
- 全部博客 (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 976场景:将文件夹所有的文件合并到指定的文件夹下 另外:如果想效 ... -
多线程-线程池的四种创建方式
2020-04-01 18:38 410多线程-线程池的四种创建方式 https://blog.cs ... -
Java基础之:nio
2019-11-13 15:38 414一、理论讲解: 史上最强Java NIO入门:担心从入门到放弃 ... -
Java 分布式之:RPC 基本概念
2019-11-13 15:07 402转载: https://www.jianshu.com/p/ ... -
Java之 volatile 关键字原理详解
2019-11-07 15:36 443一、什么是 volatile ? ... -
POI实现excell批注背景图片(仿html浮窗显示图片)
2019-10-21 08:17 600POI实现excell批注背景图片(仿html浮窗显示图片) ... -
Java之设计模式之 Observer 观察者
2019-07-04 17:21 972观察者设计模式 Java 已经实现了该模式,并且提供了使用类 ... -
HashMap, LinkedHashMap and TreeMap
2019-03-01 11:04 624https://stackoverflow.com/a/177 ... -
Java lib 操作 excel 插入图片
2019-01-19 12:46 838https://poi.apache.org/componen ... -
数据库连接池C3P0
2018-05-29 16:50 810一、名字的由来 很多 ... -
Java8之集合(Collection)遍历 forEach()、stream()
2018-05-29 14:39 20658package java8.collections; ... -
Junit Vs main on "java.util.concurrent.Executors"
2017-11-10 16:44 733Same code with different result ... -
Java之大数据学习路线
2017-11-03 10:08 5673三个月大数据研发学习 ... -
Java中创建对象的5种方式
2017-10-26 14:21 805一、Java之5种创建对象的方式 ————————————— ... -
Log4j和Slf4j的比较
2017-06-23 12:41 1360一直搞不清 Log4j 和 SLF4j 的关系。今天才若有所 ... -
Java之Java7新特性之try资源句式
2017-04-20 14:58 5338Java之Java7新特性之try资源句式 一、【try资源 ... -
Java之 java.util.concurrent 包之ExecutorService之submit () 之 Future
2017-03-04 21:27 3772一、如何使用 ExecutorService.submit() ... -
Java之 java.util.concurrent 包之Executor与ExecutorService
2017-03-04 21:18 2644一、问题: execute() 与 submit() 的区别? ... -
JAVAEE之单用户登录
2017-02-05 11:55 1032单用户登录是系统中数据一直性的解决方案之一。 问题背景: 试 ... -
Java之多线程之线程池之线程重复使用
2017-02-04 13:33 5522一、问题背景 在使用多线程时,如果要开启一个任务,则就需要新 ...
相关推荐
a: 创建一个线程 ...h: problem1 生产者消费者问题 (1生产者 1消费者 1缓冲区) problem1 more 生产者消费者问题 (1生产者 2消费者 4缓冲区) problem2 读者与写着问题 I: 信号量 semaphore 解决线程同步问题
1、设计目的:通过研究Linux的进程同步机制和信号量,实现生产者消费者问题的并发控制。 2、说明:有界缓冲区内设有20个存储单元,放入取出的产品设定为20个100以内的随机整数。 3、设计要求: 1) 生产者与消费者均...
参考教材中的生产者消费者算法,创建5个进程,其中两个进程为生产者进程,3个进程为消费者进程。一个生产者进程试图不断地在一个缓冲中写入大写字母,另一个生产者进程试图不断地在缓冲中写入小写字母。3个消费者...
在Windows2000环境下,创建一个控制台进程,在此进程中创建n个线程来模拟生产者或者消费者。这些线程的信息由本程序定义的“测试用例文件”中予以指定。 该文件的格式和含义如下: 3 1 P 3 2 P 4 3 C 4 1 4 P 2 5 C ...
设计目的:通过研究Linux 的进程机制和信号量实现生产者消费者问题的并发控制。说明:有界缓冲区内设有20 个存储单元,放入/取出的数据项设定为1‐20 这20 个整型数。设计要求:1)每个生产者和消费者对有界缓冲区...
操作系统的经典生产者消费者问题 拿来和大家共享 MFC实现 可以实现已试过, 希望不要侵权 给大家共享以下
内容概要:基于QT Creator环境的多线程编程验证互斥的原理,通过使用semaphore,mutex等控制变量,实现对生产者消费者模型的真实模拟。 适合人群:初学操作系统的学生 能学到什么:调用了Qt多线程类库QThread进行...
使用MFC相关的功能函数来模拟经典进程互斥和同步问题
说明:本人在给Java游戏开发特训班讲解多线程时,需要说明多线程同步的问题,其中讲解了使用“生产者-消费者”模型来解决同步问题。可是当时特训班的学生不是很明白,特别是不明白这个模型怎么使用。这可能是由于...
利用Java多线程实现的操作系统的生产者与消费者算法,主要用到了线程的同步,等待与唤醒操作。
该资源是用mfc实现生产者消费者线程操作的模拟过程,全部代码都在里面,只需要在vs2010MFC中运行即可!
1、通过编写程序,掌握基本的同步互斥算法,理解生产者和消费者模型。 2、了解多线程并发执行机制,线程间的同步和互斥。 3、学习使用同步对象,掌握相应的函数。
它们之间的关系如下图所示: 生产者1 2 3 … N 消费者 图9.4 生产者消费者问题描述 这里用有名管道来模拟有限缓冲区,用信号量来解决生产者消费者问题中的同步和互斥 问题。 3.实验代码 /*product.c*/ #include ...
车票购票 每次产生20张票(由生产者线程完成),由3台售票机同时循环向外出票(售票机就是消费者线程),编写一个卖票模拟小系统 要求: 20张票卖完了,售票机就不能卖了,等有票才可以; 产生了20张票,要等票卖了一些...
用VC++编写的 1.进程的创建 2.线程的创建及线程函数的设计 3.进程间基于共享存储和事件的通讯 4.编程模拟生产者-消费者问题
一种竞争严重的,使用Java语言模拟经典的线程通信的生产者消费者问题的课程设计报告。多线程随机竞争,所以每次运行结果并不相同。代码在eclipse中测试可用。 报告除了代码注释外,全部是英文。
如果对什么是线程、什么...说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。
实现java模拟阻塞队列的例子,该代码包括,阻塞队列实现生产者,消费者。和模拟阻塞队列实现生产者及消费者模式,帮助你更好的理解java多线程
可以同时由多个线程调用dispatchCall方法。 Dispatcher类必须具有同时(并发)处理10个呼叫的能力。 每个呼叫可以持续5到10秒之间的随机时间。 您必须进行单元测试,其中有10个呼叫到达。 额外/加 提供一些解决...