您的位置:首页 > 大数据 > 人工智能

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

2015-05-29 15:45 363 查看
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 block
e.printStackTrace();
}
}
size --;
System.out.println("Consume a product, size:"+size);
lock.notify();
}
}

public void Productor(){
synchronized (lock) {
while(size == CAPACITY){//read
System.out.println("productor wait");
try {
lock.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: