import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Created by ldx on 2017/4/10.
*/
public class ProducerConsumerByBlockingQueue{
private final static BlockingQueue<Product> queue =new LinkedBlockingDeque<Product>();
private static AtomicInteger autoIndex =new AtomicInteger() ;
class Product{
private int index;
Product(){
index= autoIndex.getAndIncrement();
}
public String toString(){
return "product__"+index+" "+super.toString();
}
}
class Producer implements Runnable{
@Override
public void run() {
try {
while(true){
Product p=new Product();
queue.put(p);
// Thread.currentThread().sleep(1000);
System.out.println("produce "+p.toString());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class Consumer implements Runnable{
@Override
public void run() {
try {
while(true){
Product p=queue.take();
System.out.println("consume "+p.toString());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[]args){
ProducerConsumerByBlockingQueue pcbb=new ProducerConsumerByBlockingQueue();
Producer producer =pcbb.new Producer();
Consumer consumer =pcbb.new Consumer();
new Thread(producer).start();
new Thread(consumer).start();
new Thread(consumer).start();
}
}
使用BlockingQueue实现生产者消费者模式
最新推荐文章于 2020-12-30 12:50:19 发布