【原创代码,如有不足,欢迎指正!感谢!(* ̄︶ ̄) 】
【相互学习,天天向上】
【欢迎评论】
【一个没有天赋的女程序媛,今天又加油了!Fighting !】
/**
* 利用BlockingQueue实现生产者消费者模型
*
* @author little_lion
*
*/
public class ProducerConsumer1 {
public static void main(String[] args) {
final ArrayBlockingQueue<Integer> bq=new ArrayBlockingQueue<Integer>(10);
final AtomicInteger ai=new AtomicInteger();
Runnable runnableProducer=new Runnable() {
public void run() {
while(true){
try {
int i=ai.addAndGet(1);
System.out.println(Thread.currentThread().getName()+" 生产 "+i);
bq.put(i);
Thread.sleep(5000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
};
Runnable runnableConsumer=new Runnable() {
public void run() {
while(true){
try {
int j=bq.take();
System.out.println(Thread.currentThread().getName()+" 消费 "+j);
Thread.sleep(3500);
} catch (Exception e) {
e.printStackTrace();
}
}
}
};
Thread [] producerThreads=new Thread[5];
Thread [] consumerThreads=new Thread[3];
for (int i = 0; i < producerThreads.length; i++) {
producerThreads[i]=new Thread(runnableProducer);
producerThreads[i].setName("producer"+i);
producerThreads[i].start();
}
for (int i = 0; i < consumerThreads.length; i++) {
consumerThreads[i]=new Thread(runnableConsumer);
consumerThreads[i].setName("consumer"+i);
consumerThreads[i].start();
}
}
}