基于wait和notify的生产者消费者实例

来源:互联网 发布:软件开发业务介绍 编辑:程序博客网 时间:2024/05/02 04:41


package com.test;public class WaitNotify {private final int CAPACITY = 10;private volatile int size = 0;private final Object lock = new Object();public void Consumer(){synchronized (lock) {while(size <= 0){System.out.println("consumer wait");try {lock.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}size --;System.out.println("Consume a product, size:"+size);lock.notify();}}public void Productor(){synchronized (lock) {while(size == CAPACITY){//readSystem.out.println("productor wait");try {lock.wait();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}size ++;System.out.println("Produce a product, size:"+size);lock.notify();}}public static void main(String[] args) {WaitNotify waitNotify = new WaitNotify();for(int i=0;i<2;i++){new Thread(()->{while(true)waitNotify.Consumer();}).start();}for(int i=0;i<2;i++){new Thread(()->{while(true)waitNotify.Productor();}).start();}for(int i=0;i<111;i++){new Thread(()->{waitNotify.Productor();}).start();}for(int i=0;i<111;i++){new Thread(()->{waitNotify.Consumer();}).start();}}}


0 0
原创粉丝点击