package com.habby.test.test1;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;
public class HabbyTest {
private List<String> mList;
private final int MAX_COUNT = 5;
private ReentrantLock mLock;
private Condition mFullCondition;
private Condition mEmptyCondition;
public HabbyTest() {
mLock = new ReentrantLock();
mFullCondition = mLock.newCondition();
mEmptyCondition = mLock.newCondition();
mList = new LinkedList<String>();
}
private class ProductorThread extends Thread {
@Override
public void run() {
while (true) {
try {
mLock.lock();
System.out.println("ProductorThread-lock()");
while (mList.size() >= MAX_COUNT) {
mFullCondition.await();
}
mList.add("Habby");
System.out.println("add Habby");
mEmptyCondition.signal();
} catch (InterruptedException e) {
e.printStackTrace();
return;
} finally {
mLock.unlock();
System.out.println("ProductorThread-unlock()");
}
}
}
}
private class ConsumerThread extends Thread {
@Override
public void run() {
while (true) {
try {
mLock.lock();
System.out.println("ConsumerThread-lock()");
while (mList.size() == 0) {
mEmptyCondition.await();
}
mList.remove("Habby");
System.out.println("remove Habby");
mFullCondition.signal();
} catch (InterruptedException e) {
e.printStackTrace();
return;
} finally {
mLock.unlock();
System.out.println("ConsumerThread-unlock()");
}
}
}
}
public static void main(String[] args) {
HabbyTest test = new HabbyTest();
test.new ProductorThread().start();
test.new ConsumerThread().start();
}
}
生产者消费者
最新推荐文章于 2024-04-24 00:06:45 发布