您的位置:首页 > 产品设计 > UI/UE

使用BlockingQueue实现生产者,消费者模式

2017-12-21 14:50 453 查看
生产者类:

import java.util.concurrent.BlockingQueue;

public class Producer implements Runnable {
BlockingQueue<String> queue;
public Producer(BlockingQueue<String> queue){
this.queue=queue;
}

@Override
public void run() {
try {
String temp="消费线程"+Thread.currentThread().getName();
System.out.println("生产线程"+Thread.currentThread().getName());
queue.put(temp);
} catch (InterruptedException e) {
e.printStackTrace();
}

}
}


消费者类:

import java.util.concurrent.BlockingQueue;

public class Customer implements Runnable {
BlockingQueue<String> queue;
public Customer(BlockingQueue<String> queue){
this.queue=queue;
}

@Override
public void run() {
try {
String temp=queue.take();
System.out.println(temp);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}


测试类:

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

public class Test {
public static void main(String[] args) {
BlockingQueue<String> queue=new LinkedBlockingQueue<String>(2);
Producer producer=new Producer(queue);
Customer customer=new Customer(queue);
for(int i=0;i<5;i++){
new Thread(producer,"Producer"+(i+1)).start();
new Thread(customer,"Customer"+(i+1)).start();
}
}

}


输出结果:

生产线程Producer1

生产线程Producer2

消费线程Producer1

消费线程Producer2

生产线程Producer3

生产线程Producer4

消费线程Producer3

消费线程Producer4

生产线程Producer5

消费线程Producer5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息