Modelo de productor para pruebas:
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();
}
}
}
}
Modelo de consumidor para pruebas:
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();
}
}
}
}
Prueba de modelo:
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();
}
}
Ejecutar ejemplo: