java-生产者消费者模式
生活随笔
收集整理的這篇文章主要介紹了
java-生产者消费者模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
經常會有公司叫我們手撕代碼,比如網易,阿里,那我們是不是該掌握下呢。下面這段代碼來自《現代操作系統》進程與線程P49頁。
public class ProducerConsumer {public ProducerConsumer() { }private static final int N = 100;static Producer producer = new Producer();static Consumer consumer = new Consumer();static Monitor monitor = new Monitor();private static class Producer extends Thread {@Overridepublic void run() {//你生產的對象int item;while(true) {item = produce_item();monitor.insert(item); }}public int produce_item() {//TODO你需要生產的對象}}private static class Consumer extends Thread {@Overridepublic void run() {//你打算消費的對象int item;while(true) {item = monitor.remove();consumer_item(item); }}private int consumer_item(int item) {// TODO Auto-generated method stub}}private static class Monitor {//存放對象的容器LinkedList<Integer> buffer = new LinkedList<>();int count =0;public synchronized void insert(int item) {if(count == N) {try {wait();} catch (InterruptedException e) {e.printStackTrace();}}buffer.add(item);count++;if(count == 1) {notifyAll();}}public synchronized int remove() {if(count == 0) {try {wait();} catch (InterruptedException e) {e.printStackTrace();}}int val = buffer.getFirst();buffer.remove();count--;if(count == N-1) {notifyAll(); }return val;}public static void main(String[] args) {producer.start();consumer.start();} }轉載于:https://www.cnblogs.com/loren-Yang/p/7466107.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java-生产者消费者模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对于反射的一些总结(一)
- 下一篇: 洛谷 P1736 创意吃鱼法