生產者-消費者模型實現
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