1. 程式人生 > >生產者-消費者模型實現

生產者-消費者模型實現

public class Storage {

    private int storage = 10;
    private int MAX = 10;

    public int getMaxSize() {
        return this.MAX;
    }

    public int getStorage() {
        return this.storage;
    }

    public synchronized void add() {
        if (storage >= MAX) {
            try {
                this
.wait(); } catch (Exception e) { e.printStackTrace(); } System.out.println("倉庫已滿,停止存放!"); return; } storage += 1; System.out.println("倉庫容量+1,目前容量: " + storage); notifyAll(); } public synchronized void
del() { if (storage <= 0) { try { this.wait(); } catch (Exception e) { e.printStackTrace(); } System.out.println("倉庫已空,停止取貨!"); return; } storage -= 1; System.out.println("倉庫容量-1,目前容量: "
+ storage); notifyAll(); } public static void main(String[] args) { Storage storage = new Storage(); Producer producer = new Producer(storage); Consumer consumer = new Consumer(storage); Thread p1 = new Thread(producer); Thread p2 = new Thread(producer); Thread c1 = new Thread(consumer); Thread c2 = new Thread(consumer); p1.start(); p2.start(); c1.start(); c2.start(); } } class Producer implements Runnable { Storage storage; public Producer(Storage storage) { this.storage = storage; } @Override public void run() { while(true) { storage.add(); } } } class Consumer implements Runnable { Storage storage; public Consumer(Storage storage) { this.storage = storage; } @Override public void run() { while(true) { storage.del(); } } }

相關推薦

Linux生產者消費者模型實現

任何語言提及到多執行緒同步都離不開生產者/消費者模型。這也是針對許多現實問題建模用到的基礎模型。這一篇就來看一下在Linux環境下,C語言實現的兩種生產者和消費者模型。 關鍵字:Linux C 生產者 消費者 條件變數實現生產-消費模型 條件變數都會和互斥鎖進行配合

生產者-消費者模型實現

public class Storage { private int storage = 10; private int MAX = 10; public int getMaxSize() { return this.

基於線程實現生產者消費者模型(Object.wait(),Object.notify()方法)

生產者 nbsp 來看 spa res strong read 在哪裏 那一刻 需求背景 利用線程來模擬生產者和消費者模型 系統建模 這個系統涉及到三個角色,生產者,消費者,任務隊列,三個角色之間的關系非常簡單,生產者和消費者擁有一個任務隊列的引用,生產者負責往隊列中放置對

Queue 實現生產者消費者模型

pri join() imp 等待 tar 構造函數 nowait import 長度 Python中,隊列是線程間最常用的交換數據的形式。 Python Queue模塊有三種隊列及構造函數: 1、Python Queue模塊的FIFO隊列先進先出。 class Queue

多線程學習-基礎(十二)生產者消費者模型:wait(),sleep(),notify()實現

都是 exce 生產 runnable 下午 util 庫存 jason 最大 一、多線程模型一:生產者消費者模型 (1)模型圖:(從網上找的圖,清晰明了) (2)生產者消費者模型原理說明:   這個模型核心是圍繞著一個“倉庫”的概念,生產者消費者都是圍繞著:“倉庫”

使用隊列queue實現一個簡單的生產者消費者模型

star 線程 import form += art start 慢慢 隊列 一、生產者消費者模型 我們去超市商店等地購買商品時,我們大部分人都會說自己是消費者,而超市的各大供貨商、工廠等,自然而然地也就成了我們的生產者。如此一來,生產者有了,消費者也有了,那麽將二者聯系起

生產者-消費者模型(boost實現

mydata.h #ifndef _MYDATA_H_ #define _MYDATA_H_ #endif #include "stdafx.h" #include<iostream> #include <boost/thread/condition.hpp> #

python併發程式設計-管道實現生產者消費者模型

from multiprocessing import Lock,Pipe,Process def producer(con,pro,name,food): con.close() for i in range(100): f = '%s生產%s%s'%(

什麼是阻塞佇列? 如何使用阻塞佇列來實現生產者-消費者模型

什麼是阻塞佇列? 阻塞佇列是一個在佇列基礎上又支援了兩個附加操作的佇列。 2個附加操作: 支援阻塞的插入方法:佇列滿時,佇列會阻塞插入元素的執行緒,直到佇列不滿。 支援阻塞的移除方法:佇列空時,獲取元素的執行緒會等待佇列變為非空。 阻塞佇列的應用場

分散式Web應用----基於Socket+動態代理實現簡單RPC 生產者消費者模型

寫在前面 前面一文主要簡單介紹了JAVA動態代理基本原理,這也是實現RPC的基本知識,這裡我們運用Socket簡單實現一個遠端過程呼叫,方便大家理解RPC的基本原理,希望對大家有所幫助。 新建People介面類與Man實現類 介面類 pu

JAVA 多執行緒經典案例-生產者消費者模型【使用wait/notify實現

  生產者消費者模型實現細節 生產者生產產品到公共倉庫,消費者消費公共倉庫中產品。 情況一:當公共倉庫產品達到倉庫容量上限,生產者停止生產; 情況二:當公共倉庫沒有產品,或達到設定的倉庫容量下限,消費者停止消費; 情況三:當公共倉庫產品達到容量上限時,消費者消費一

java實現生產者-消費者模型

1.方式一:使用synchronize以及wait()、notify() /notifyAll() 的配合使用 package producercomsumer; /** * 描述: * * @author: fangchangtan * @version 建立時間:2019

JAVA多執行緒--實現生產者/消費者模型:一對一

要實現的功能:執行緒A將一個數據放入佇列,然後通知B進行處理,B處理完後再通知A放一個數據入佇列。 package javathreadlearn; import java.util.LinkedList; import java.util.List; import java.util.Map;

Java多執行緒之 使用wait和notify實現生產者消費者模型

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

生產者消費者模型實現(基於條件變數)

基於條件變數的生產者和消費者模型實現 我們在這裡使用使用一個生產者和一個消費者來實現。 並且使用一個定容的佇列來作為兩者的緩衝區域,即交易場所。 生產者與消費者模型及條件變數理解點這裡 基本思路: 生產者向佇列中放入資料 消費者從佇列中拿走資料 存放資料的佇列

12 再次改進版通過佇列實現一個生產者消費者模型

import time from multiprocessing import Process,Queue #生產者 def producer(q): for i in range(10): time.sleep(0.2) s = '大包子%s號'%i

Python 再次改進版通過隊列實現一個生產者消費者模型

code bsp 隊列 clas 任務 get time multi put import time from multiprocessing import Process,Queue #生產者 def producer(q): for i in range(10

Python 通過隊列實現一個生產者消費者模型

pri con 一個 %s color for int code col import time from multiprocessing import Process,Queue #生產者 def producer(q): for i in range(10)

互斥量和條件變數實現生產者消費者模型

/*producer and constmer*/ #include<stdio.h> #include<pthread.h> #include<string.h>

linux c語言實現佇列及用於生產者消費者模型

c語言沒有佇列的資料結構,需要自己實現//myqueue.h #ifndef __MYQUEUE_H__ #define __MYQUEUE_H__ #include <stdio.h> #include <stdlib.h> #define T