java 生产者 与 消费者的案例】的更多相关文章

主要理解了两个问题 1.线程数据同步的问题 2.线程交替运行的方式 package ThreadDemo; /** * 生产者与消费者的案例(一,同步的问题,值的问题 二,交替执行的问题) * @author lile * 同步的问题(synchronized 知识点) * 交替执行的问题(notify ,wait, 线程等待) */public class ThreadDemo { public static void main(String[] args) { Food food = new…
/** * 多线程共享数据 * 线程同步:多个线程在同一个时间段只能有一个线程执行其指定代码,其他线程要等待此线程完成之后才可以继续执行. * 多线程共享数据的安全问题,使用同步解决. * 线程同步两种方法: * 1.同步代码块 * synchronized(要同步的对象){ 要同步的操作 } * 2.同步方法 * public synchronized void method(){ 要同步的操作 } */ public class Main { public static void main(…
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 上一讲我们让消费者和生产者都各停1毫秒,实际上大多并不是这样的.第二讲,我们讲一个极端的例子和一个正常的例子,假设您已经看过上一讲,我们只改变Consumer和Producer,来看结果. Java生产者与消费者(上) 名词解释 wait:当前线程不运行,处理等待状态,等待notify:所以也不会往下执行. 您可能会有疑问前例中的为什么要用while循环而非if语句? 主要是防止多线程操作时,例桌…
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 生产与消费者模式,是编程中最常用的模式之一,在多线程中应用比较明显.个人理解:在自助餐厅,厨师在不断做菜放桌子上,吃货不断从桌子上拿东西,这中间如果桌子上已经摆满那厨师要暂停工作 ,桌子上已没有食物则吃货要暂停拿东西吃. 先决条件,食材充足,桌子一定. 本程序设计原则:由于synchronized加锁方法,使得内部的所有变量也被加锁:我们采取多线程操作,故中间要用sleep(为了把锁让给别人,比如…
多线程的开发中有一个最经典的操作案例,就是生产者-消费者,生产者不断生产产品,消费者不断取走产品. package com.vince; /** * 生产者与消费者案例 * @author Administrator * */ public class ThreadDemo4 { public static void main(String[] args) { // TODO 自动生成的方法存根 Food food=new Food(); Producter p=new Producter(fo…
前言: 生产者和消费者模式是我们在学习多线程中很经典的一个模式,它主要分为生产者和消费者,分别是两个线程, 目录 一:生产者和消费者模式简介 二:生产者和消费者模式的实现 声明:本例来源于java经典著作:<Think in java>,接下来将会采用本例子将会借鉴其中的案例进行分析 首先我们来设想有一个这样的场景:一个饭店里有一个做饭的厨师和来吃饭的人,服务员负责端食物,这里就可以把厨师当做生产者,(这里暂且把服务员当做消费者),而食物则有这样的过程,被厨师生产出来,然后被服务员消费.当食物…
// The standard idiom for calling the wait synchronized(sharedObject) { while(condition){ sharedObject.wait();// Releases lock, and reacquires on wake up } // do action based upon condition e.g. take or put into queue } 使用wait和notify函数的规范代码模版. 在while…
容器类Box.java public class Box { private int num = 0; public void put(){ if(num==10){ try { System.out.println("生产者被阻塞"); this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } return; } num++; System.out.println("生产了一个,现在有&qu…
有很多实现的方法 使用blockingqueue实现 demo import java.util.concurrent.LinkedBlockingQueue; /** * Created by 58 on 2017/11/27. */ public class proandconsu { private static LinkedBlockingQueue<Integer> buffer = new LinkedBlockingQueue<Integer>(5); public…
一.导入依赖 <dependency> <groupId>javaee</groupId> <artifactId>javaee-api</artifactId> <version>5</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifa…