public class Consume_Produce {
public static void main(String[] args ){
Bullet b=new Bullet();
Produce p=new Produce(b);
Consume c=new Consume(b);
Thread t1=new Thread(p);
Thread t2=new Thread(c);
t1.start();
t2.start();
}
}
class Bread{
public int id;
public Bread(int id){this.id=id;}
}
class Bullet {
Bread b[]=new Bread[15];
public int index=0;//bread的id
public synchronized void produceBread(){
while(index==15){ //l篮子的容量是15,当达到15个面包时 生产线程wait
try{this.wait();
}catch(InterruptedException e)
{e.printStackTrace();}
}
this.notify(); //唤醒别的线程
b[index]=new Bread(index);
index++;
System.out.println("produce-----"+index);
}
public synchronized Bread consumeBread(){
while(index==0){ //当篮子里面没有面包时,消费线程wait()
try{this.wait();
}catch(InterruptedException e)
{e.printStackTrace();}
}
this.notify(); //唤醒别的线程
System.out.println("consume-----"+index);
index--;
return b[index];
}
}
class Produce implements Runnable{ //这是一个生产线程
Bullet b=null;
public Produce(Bullet b){this.b=b;}
public void run(){
for(int i=0;i<200;i++){
b.produceBread();}
}
}
class Consume implements Runnable{ //这是一个消费线程
Bullet b=null;
public Consume(Bullet b){this.b=b;}
public void run(){
for(int i=0;i<200;i++){ b.consumeBread();}
}
}
分享到:
相关推荐
生产者消费者模式是java多线程经典的安全,它用到了同步,资源共享,wait,notify等技术。
使用Java多线程的wait和notify方法实现最简单的生产者消费者模式
wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。本文对这些关键字的使用进行了描述。 在 Java 中可以用 wait、notify 和 notifyAll 来实现...
多线程实例 生产者、消费者有讲解 下面是其中一小部分代码 public synchronized void putShareChar(char c) { // 通知消费者已经生产,可以消费 if (isProduced) { // 如果产品还未消费,则生产者等待 try { ...
我们将使用Python线程来解决Python中的生产者—消费者问题。这个问题完全不像他们在学校中说的那么难。 如果你对生产者—消费者问题有了解,看这篇博客会更有意义。 为什么要关心生产者—消费者问题: 可以帮你更好...
一、重点知识 isDaemon 判断是否为守护线程。...如果没有线程处于wait状态,调用notify此时是一个空唤醒 stringBuffer中的同步方法,都是非静态的,因为共用一个this锁就可以了,线程进去调用他的一个方法
生产者和消费者是一个十分经典的多线程协作模式 **常见方法:** - void wait() 当前线程等待,直到被其他线程唤醒 - void notify() 随机唤醒单个线程 - void notifyAll() 唤醒所有线程
三个线程顺序打印问题2.1.1 题目2.1.2 题目分析2.1.3 我的答案2.2 生产者消费者问题2.2.1 题目2.2.2 题目分析2.2.3 我的答案 源码地址:https://github.com/nieandsun/concurrent-study.git 1 wait、notify、...
1.notify的使用 2. wait的使用 3. linux系统下的开发 4.多线程通信 5. 生产者和消费者模式
本文实例讲述了python条件变量之生产者与消费者操作。分享给大家供大家参考,具体如下: 互斥锁是最简单的线程同步机制,面对复杂线程同步问题,Python还提供了Condition对象。Condition被称为条件变量,除了提供与...
Day 22 Author:ScorpioDong 1. 多线程 1.1 WAITING(无限等待) 当某一线程被执行wait()方法,需要等待其他线程...现在存在两个完全无关的线程,生产者和消费者,但是商品会作为他们两者之间的共享资源。 生产者和消费
典型实例有生产者和消费者,本文也通过实例来分析线程等待唤醒机制。 1、相关API介绍 public final void notify() 唤醒在此对象监视器上等待的单个线程,如果所有线程都在此对象上等待,则会任意选择唤醒...
│ 高并发编程第一阶段26讲、多线程下的生产者消费者模型,以及详细介绍notifyAll方法.mp4 │ 高并发编程第一阶段27讲、wait和sleep的本质区别是什么,深入分析(面试常见问题).mp4 │ 高并发编程第一阶段28讲、...
│ 高并发编程第一阶段26讲、多线程下的生产者消费者模型,以及详细介绍notifyAll方法.mp4 │ 高并发编程第一阶段27讲、wait和sleep的本质区别是什么,深入分析(面试常见问题).mp4 │ 高并发编程第一阶段28讲、...
1. 多线程 1.1 线程状态 WAITING(无限等待) 当线程被执行wait()方法时,会被施加 “长睡不醒” 的魔法。此时,它不能自己唤醒...而此时消费者发出notify信号,但是生产者不会接收notify信号(因为没有wait),等消费
通过生产者消费者模型理解等待唤醒机制.mp4 Condition的使用及原理解析.mp4 使用Condition重写waitnotify案例并实现一个有界队列.mp4 深入解析Condition源码.mp4 实战:简易数据连接池.mp4 线程之间通信之join应用与...
这个机制广泛应用于多线程编程中,例如生产者-消费者模型、读者-写者模型等。 std::condition_variable 的使用通常需要与 std::mutex 配合使用。 std::mutex 是一种互斥锁,用于保护共享资源的访问。 std::...
7.3 生产者-消费者问题 127 7.4 对比上锁与等待 131 7.5 条件变量:等待与信号发送 132 7.6 条件变量:定时等待和广播 136 7.7 互斥锁和条件变量的属性 136 7.8 小结 139 习题 139 第8章 读写锁 140 8.1 ...
7.3 生产者-消费者问题 127 7.4 对比上锁与等待 131 7.5 条件变量:等待与信号发送 132 7.6 条件变量:定时等待和广播 136 7.7 互斥锁和条件变量的属性 136 7.8 小结 139 习题 139 第8章 读写锁 140...
第30节通过生产者消费者模型理解等待唤醒机制00:20:50分钟 | 第31节Condition的使用及原理解析00:17:40分钟 | 第32节使用Condition重写wait/notify案例并实现一个有界队列00:22:05分钟 | 第33节深入解析Condition...