测试用生产者模型:
package domain;
import java.util.concurrent.BlockingQueue;
/**
* 生产者模型
*
* @author WanAkiko
*
*/
public class EProductor implements Runnable {
private BlockingQueue<String> queue;
int count = 1;
public EProductor(BlockingQueue<String> queue) {
super();
this.queue = queue;
}
@Override
public void run() {
while (true) {
String msg = "产品序列" + (count++);
try {
Thread.sleep(1000);
queue.add(msg);
System.out.println("生产者线程:" + msg);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
测试用消费者模型:
package domain;
import java.util.concurrent.BlockingQueue;
/**
* 消费者模型
*
* @author WanAkiko
*
*/
public class EConsumer implements Runnable {
private BlockingQueue<String> queue;
public EConsumer(BlockingQueue<String> queue) {
super();
this.queue = queue;
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
String msg = queue.take();
System.out.println("消费者线程:" + msg);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
模型测试:
package client;
import java.util.concurrent.ArrayBlockingQueue;
import domain.EConsumer;
import domain.EProductor;
public class PC03Test {
public static void main(String[] args) {
ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(3);
new Thread(new EProductor(queue)).start();
new Thread(new EConsumer(queue)).start();
}
}
运行示例:

本文提供了一个典型的生产者-消费者模型实现示例,通过Java的`BlockingQueue`接口进行线程间的同步通信,展示了如何使用`ArrayBlockingQueue`作为共享资源容器。
3216

被折叠的 条评论
为什么被折叠?



