生产者类:
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