复制代码 代码如下:
package condition;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class ProducerConsumerDemo {
public static void main(String[] args) {
int producerCount = 10;
int consumerCount = 15;
final ProducerConsumerDemo pcd = new ProducerConsumerDemo(5); // 缓冲区大小为5
Thread[] producerThreads = new Thread[producerCount];
for(int i = 0; i < producerCount; i++) {
producerThreads[i] = new Thread("producer" + (i+1)) {
@Override
public void run() {
pcd.produce();
}
};
}
Thread[] consumerThreads = new Thread[consumerCount];
for(int j = 0; j < consumerCount; j++) {
consumerThreads[j] = new Thread("consumer" + (j+1)) {
@Override
public void run() {
pcd.consume();
}
};
}
// 启动生产者消费者线程
for(int i = 0; i < producerCount; i++) {
producerThreads[i].start();
}
for(int j = 0; j < consumerCount; j++) {
consumerThreads[j].start();
}
}
private static final int DEFAULT_BUFFER_SIZE = 10;
private int bufferSize; // 缓冲区大小
private List
}