独立写了一个生产消费者的模式,加强理解多线程编程及线程间的同步及信息交换。
要点:
1、在启动线程时,先需启动生产者。
2、生产者生产满了后,就不能再生产,进入等待状态,直到有消费者进行消费。
3、消费者进行消费时,若没有,则不能进行消费,进入等待状态。直到生产者生产了。
public class TestProduct {
public static void main(String[] args){
final Product pro = new Product();
ExecutorService service = Executors.newCachedThreadPool();
for(int j=0; j<2; j++){
new Thread(){
public void run()
{
pro.putEgg();
//pro.getEgg();
};
}.start();
for(int i=0; i<2; i++){
new Thread(){
public void run()
{
pro.getEgg();
//pro.putEgg();
};
}.start();
}
}
}
}
public class Product {
private boolean flag = true;// true:盘中没有鸡蛋,false 盘中有鸡蛋
//盘中有鸡蛋则唤醒其它的线程可以来取了,盘中无鸡蛋,则此于等待状态,等着来放鸡蛋。
//放鸡蛋
public synchronized void putEgg(){
//如果盘中没有鸡蛋
if(flag){
flag = false;
System.out.println(Thread.currentThread().getName()+" 盘中放入了一个鸡蛋了,可以取鸡蛋了");
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
notify();
}
//取鸡蛋
public synchronized String getEgg()
{
//如果有鸡蛋,则取出鸡蛋
String jidan;
if(!flag)
{
System.out.println(Thread.currentThread().getName()+" 已经取出来一个鸡蛋了");
flag = true;
try {
wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
notify();
return null;
}
}
分享到:
相关推荐
java多线程实现生产者和消费者
java 多线程 生产者消费者模式,你值得拥有
用java多线程简易实现生产者消费者模式的代码,用java多线程简易实现生产者消费者模式的代码。
java 多线程 生产者消费者模式,多个生产者对多个消费者,使用jdk 线程池及 BlockingQueue实现,解决了待生产的任务生产完成后,正常终止所有线程,避免线程(特别是消费者线程)因阻塞而无限等待的情况。源码中还简单...
NULL 博文链接:https://hbkh2000.iteye.com/blog/378843
生产者消费者模式是java多线程经典的安全,它用到了同步,资源共享,wait,notify等技术。
java多线程之消费者生产者模式参照.pdf
主要介绍了Java多线程生产者消费者模式实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
java多线程之消费者生产者模式.pdf
NULL 博文链接:https://ruyi574812039.iteye.com/blog/2097988
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
java多线程设计模式详解,包括了单线程,生产者和消费者,各种线程方法的解释!
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
基于队列实现的生产消费者模式java 源码,并且采用多线程进行消费
主要介绍了Java多线程并发生产者消费者设计模式实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
主要介绍了Java多线程之线程通信生产者消费者模式及等待唤醒机制代码详解,具有一定参考价值,需要的朋友可以了解下。
生产者/消费者问题的多种Java实现方式。采用适配器模式架构完成三种方式的实现。demo清晰明了
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。