java_Thread生产者与消费者 Demo
package com.bjsxt.Thread.Demo;
public class ProducerConsumer {
/**
* 生产者与消费者
* @param args
*/
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();// 开启线程
}
} /**
* Woto类
*/
class WoTo {
int id;
WoTo(int id) {
this.id = id;
}
public String toString() {
return "WoTo : " + id;
}
} /**
* 框类(用来装馒头)
* @author wenfei
*/
class SyncStack {
int index = 0;
WoTo[] arrwt = new WoTo[6]; public synchronized void push(WoTo wt) { while (index == arrwt.length) { try {
this.wait();// 暂定当前对象 } catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notify();// 叫醒当前线程
arrwt[index] = wt;
index++;
} public synchronized WoTo pop() {
while (index == 0) { try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notify();
index--;
return arrwt[index];
}
} /**
* 生产者
*
* @author wenfei
*/
class Producer implements Runnable {
SyncStack ss = null; Producer(SyncStack ss) {
this.ss = ss;
} @Override
public void run() {
// 生产wt
for (int i = 0; i <= 100; i++) {
WoTo wt = new WoTo(i);
ss.push(wt);// 往篮子里装窝头
System.out.println("生产了--->" + wt);
try {
// Thread.sleep(1000);//每生产一个睡眠一秒
Thread.sleep((int) Math.random() * 1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} } /**
* 消费者
*
* @author wenfei
*/
class Consumer implements Runnable {
SyncStack ss = null; Consumer(SyncStack ss) {
this.ss = ss;
} @Override
public void run() {
for (int i = 0; i <= 100; i++) {
WoTo wt = ss.pop();
System.out.println("消费了--->" + wt);
try {
// Thread.sleep(1000);//每消费一个睡眠一秒
Thread.sleep((int) Math.random() * 1000);//
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.out.println(wt);
}
} }
java_Thread生产者与消费者 Demo的更多相关文章
- Scala调用Kafka的生产者和消费者Demo,以及一些配置参数整理
kafka简介 Kafka是apache开源的一款用Scala编写的消息队列中间件,具有高吞吐量,低延时等特性. Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受 ...
- java多线程中的生产者与消费者之等待唤醒机制@Version1.0
一.生产者消费者模式的学生类成员变量生产与消费demo,第一版1.等待唤醒: Object类中提供了三个方法: wait():等待 notify():唤醒单个线程 notify ...
- JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止
JAVA之旅(十五)--多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止 我们接着多线程讲 一.生产者和消费者 什么是生产者和消费者?我们 ...
- Kafka 生产者和消费者入门代码基础
这篇博文讲解Kafka 的生产者和消费者实例. 基础版本一 生产者 ProducerFastStart.java package com.xingyun.tutorial_1; import org. ...
- Java中的生产者、消费者问题
Java中的生产者.消费者问题描述: 生产者-消费者(producer-consumer)问题, 也称作有界缓冲区(bounded-buffer)问题, 两个进程共享一个公共的固定大小的缓冲区(仓库) ...
- Java 多线程基础(十二)生产者与消费者
Java 多线程基础(十二)生产者与消费者 一.生产者与消费者模型 生产者与消费者问题是个非常典型的多线程问题,涉及到的对象包括“生产者”.“消费者”.“仓库”和“产品”.他们之间的关系如下: ①.生 ...
- 母鸡下蛋实例:多线程通信生产者和消费者wait/notify和condition/await/signal条件队列
简介 多线程通信一直是高频面试考点,有些面试官可能要求现场手写生产者/消费者代码来考察多线程的功底,今天我们以实际生活中母鸡下蛋案例用代码剖析下实现过程.母鸡在鸡窝下蛋了,叫练从鸡窝里把鸡蛋拿出来这个 ...
- 生产者与消费者以及ActiveMQ
生产者与消费者以及ActiveMQ 一. 多线程实现生产者与消费者 1.1 生产者与消费者头文件 #pragma once #include <iostream> #include < ...
- 【C# Task】System.Threading.Channels 生产者和消费者模式
前言 今天给大家分享一个微软官方的生产者/消费者方案的特性解决:Channel. Channel在% dotnet add package System.Threading.Channels 而在Co ...
随机推荐
- 手机端Post 数据
var data =""; using (StreamReader readStream = new StreamReader(context.Reques ...
- 20145102 《Java程序设计》第4周学习总结
20145102 <Java程序设计>第4周学习总结 教材学习内容总结 面向对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承.如果正确判断使用继承的时机,以 ...
- HDU 1233 还是畅通工程 (最小生成树)
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- hdu-5587 Array(回溯)
题目链接: Array Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) P ...
- CentOS6.5下用yum安装 git
cd /etc/yum.repos.d/ wget http://geekery.altervista.org/geekery-el6-x86_64.repo 2. 到http://packages. ...
- css+js 控制幻灯片效果
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- php nginx fastdfs 下载文件重命名
其实fdfs可以传入一个filename参数,指定文件名.. M00/00/00/fwAAAVGMateAafjTAAAABBW-xbM368.txt?filename=test.txt 这样下载时用 ...
- 【原创】Oracle函数中对于NO_DATA_FOUND异常处理的研究
一直以来有一个困惑,一直没解决,昨天一哥们问我这个问题,决心弄清楚,终于得到了答案.先看下面这个函数: create or replace function fn_test(c_xm varchar) ...
- UI3_UIViewController生命周期
// // SecondViewController.h // UI3_UIViewController生命周期 // // Created by zhangxueming on 15/7/2. // ...
- Spring IoC容器的设计—1—主线
IoC容器的接口设计图 下面对接口关系做一些简要的分析,可以依据以下内容来理解这张接口设计图. 从接口BeanFactory到HierarchicalBeanFactory,再到Configurabl ...