import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
class Producer extends Thread{
BlockingQueue<String> queue;
Producer(BlockingQueue<String> queue){
this.queue=queue;
}
public void run() {
int id=1;
while(true) {
try {
queue.put("产品"+id);
System.out.println("生产产品"+id);
Thread.sleep(1000);
id++;
}catch(Exception e){
e.printStackTrace();
}
}
}
}
class Resumer extends Thread{
BlockingQueue<String> queue;
Resumer(BlockingQueue<String> queue){
this.queue=queue;
}
public void run() {
while(true) {
try {
System.out.println("取出"+queue.take());
Thread.sleep(2500);
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
public class Test {
public static void main(String[] args) {
BlockingQueue<String> queue=new LinkedBlockingQueue<>(10);
Producer producer=new Producer(queue);
Resumer resumer=new Resumer(queue);
producer.start();
resumer.start();
}
}
输出:
生产产品1
取出产品1
生产产品2
生产产品3
取出产品2
生产产品4
生产产品5
取出产品3
生产产品6
生产产品7
生产产品8
取出产品4
生产产品9
生产产品10
取出产品5
生产产品11
生产产品12
生产产品13
取出产品6
…