import java.util.concurrent.Semaphore;
import java.util.LinkedList;
public class House
{
int count = 0;
final Semaphore empty = new Semaphore(10);
final Semaphore full = new Semaphore(0);
final Semaphore mutex = new Semaphore(1);
static LinkedList list = new LinkedList();
static class Producer extends Thread{
public void run(){
while(true){
empty.acquire();//要用什么先P一下
mutex.acquire();//互斥加紧
list.add(new Integer(count++));//put an item
mutex.release();//互斥加紧
full.release();//提供什么V一下。
}
}
}
static class Consumer extends Thread{
public void run(){
while(true){
full.acquire();
mutex.acquire();
list.removeFirst();//consume an item
mutex.release();
empty.release();
}
}
}
public static void main(String [] args){
new Producer().start();
new Consumer().start();
}
}
使用Java的Semaphore编写生产者消费者问题
最新推荐文章于 2021-05-29 14:18:15 发布