PS::线程这套东西在PHP里完全是不存在的概念,有待进一步的学习;

PS::这个实例是根据书本上的知识进行扩展的,理解程度50%左右吧!

1.定义生产消费环境

package second;

public class Queue {
int value = ;
boolean isEmpty = true;
/**
* 生产者
* @param v
*/
public synchronized void put(int v){
if(!isEmpty){//如果存在数据没有被消费
try{
System.out.println("生产者等待...");
wait();
}catch(Exception e){ }
}
value ++;//本次生产1个
isEmpty = false;//设置为false(代表有东西了可以消费了)
System.out.println("生产者共生产数量:" + v);
notify();//通知消费者开始消费
} public synchronized int get(){
//如果消费数据没有了,消费者继续等...
if(isEmpty){
try{
System.out.println("消费者等待...");
wait();
}catch(Exception e){ }
}
value --;
if(value < ){
isEmpty = true;//如果消费完了,则设置为true
}
System.out.println("消费者消费一个,剩余:"+value);
notify();
return value;
}
}

2.生产者

package second;

public class Producer extends Thread {
Queue q;
Producer(Queue q){
this.q = q;
}
public void run(){
for(int i=;i<;i++){//循环生产5次
q.put(i);
}
}
}

3.消费者

package second;

public class Consumer extends Thread {
Queue q;
Consumer(Queue q){
this.q = q;
}
public void run(){
while(true){//永远的消费下去,直到不再生产为止
q.get();
}
}
}

4.线程调用

package second;

public class Cao {
public static void main(String[] args){
Queue q = new Queue();//实例消费&生成工厂
Producer p = new Producer(q);//将工厂传入给生产者
Consumer c = new Consumer(q);//将工厂传入给消费者
p.start();//开启生成线程
c.start();//开启消费线程
}
}

Java 多线程 简单实例 (消费者与生成者)的关系的更多相关文章

  1. Java 多线程 简单实例 (Runnable)

    1.多线程实例 package second; public class A implements Runnable { public char stat = '*'; public void run ...

  2. Java 多线程 简单实例 (Thread)

    package second; public class A extends Thread { public void run(){ for(int i = 1;i <= 10 ; i++){ ...

  3. java多线程解决生产者消费者问题

    import java.util.ArrayList; import java.util.List; /** * Created by ccc on 16-4-27. */ public class ...

  4. 主题:Java WebService 简单实例

    链接地址:主题:Java WebService 简单实例    http://www.iteye.com/topic/1135747 前言:朋友们开始以下教程前,请先看第五大点的注意事项,以避免不必要 ...

  5. java多线程模拟生产者消费者问题,公司面试常常问的题。。。

    package com.cn.test3; //java多线程模拟生产者消费者问题 //ProducerConsumer是主类,Producer生产者,Consumer消费者,Product产品 // ...

  6. java多线程编程实例

    [转]这篇文章主要介绍了java多线程编程实例,分享了几则多线程的实例代码,具有一定参考价值,加深多线程编程的理解还是很有帮助的,需要的朋友可以参考下. 1.三个售票窗口同时出售20张票程序分析:   ...

  7. Java多线程实现生产者消费者延伸问题

    在操作系统中有一类问题被称为生产者消费者问题:意为,有数个生产者生产产品,有数个消费者消费产品,他们共享一定数量的缓存. 这里用java多线程编程,实现生产者消费者问题的一种延伸,橘子苹果问题. 题目 ...

  8. 【多线程】java多线程实现生产者消费者模式

    思考问题: 1.为什么用wait()+notify()实现生产者消费者模式? wait()方法可以暂停线程,并释放对象锁 notify()方法可以唤醒需要该对象锁的其他线程,并在执行完后续步骤,到了s ...

  9. Java多线程之生产者消费者问题&lt;一&gt;:使用synchronized keyword解决生产者消费者问题

    今天看了一片博文,讲Java多线程之线程的协作,当中作者用程序实例说明了生产者和消费者问题,但我及其它读者发现程序多跑几次还是会出现死锁,百度搜了下大都数的样例也都存在bug,经过细致研究发现当中的问 ...

随机推荐

  1. 视频播放-VideoVIew,Vitamio

    播放视频文件其实并不比播放音频文件复杂,主要是使用 VideoView类来实现的.这个类将视频的显示和控制集于一身,使得我们仅仅借助它就可以完成一个简易的视频播放器.VideoView的用法和 Med ...

  2. PureCSS框架

    http://www.tuicool.com/articles/iyiI32 Pure中的主要组件包括: 一个响应式网格,可根据需求定制. 一个基于 Normalize.css 的基础库,用于修复跨浏 ...

  3. tlb转dll

    项目中需要用到c++编写的dll文件,但是同事发给我的是一个tlb后缀的文件,此时需要用到vs命令工具,具体操作如下: 开始-->vs2010-->vs命令提示(2010) ,打开后,输入 ...

  4. linux 主机免验证登录

    1.ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub 2.scp -p port  ~/.ssh/id ...

  5. javaweb学习总结四(反射技术)

    一:反射的概念 反射就是加载类,然后获取类的属性.方法.构造函数等. 二:加载类到内存(有硬盘字节码文件到内存) 三种加载类的方式: @Test // 测试加载类 public void test1( ...

  6. CF Pangram

    Pangram time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...

  7. oracle中的sql%rowcount

    sql%rowcount用于记录修改的条数,就如你在sqlplus下执行delete from之后提示已删除xx行一样,这个参数必须要在一个修改语句和commit之间放置,否则你就得不到正确的修改行数 ...

  8. hdu 3473 裸的划分树

    思路: 用Sum[dep][i]记录从tree[po].l到i中进入左子树的和. #include<iostream> #include<algorithm> #include ...

  9. 关于VIM统计命令

    都是冒号命令哈::%s/./&/gn        统计字符数:%s/\i\+/&/gn    统计单词数:%s/^//n           统计行数:%s/keyword/& ...

  10. CSS/块级元素与内联元素的深入理解

    今天终于对html中的块级元素和行内元素有了一个较为理性的认识.首先w3c对于block和inline的解释为: