package com.study.handcode;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class 消费者生产者模式_利用BlockingQueue实现 {
public static void main(String[] args) {
for (int i = 0; i < 1; i++) {
final int h = i;
new Thread(() -> {
int j = 0;
while (true){
// 生产者 利用final修饰的h可以直接在当前线程中使用,但是i不能够使用
try {
ConsumerAndProvider.provider(j++);
Thread.sleep(100);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}).start();
new Thread(()->{
try {
while (true){
ConsumerAndProvider.consumer();
Thread.sleep(1000);
}
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}).start();
}
}
public static class ConsumerAndProvider{
// BlockingQueue LinkedBlockingQueue
public static BlockingQueue<Integer> blockingQueue = new LinkedBlockingQueue<>(5);
public static void consumer() throws InterruptedException {
Integer take = blockingQueue.take();
System.out.println("消费了消息:" + take);
}
public static void provider(Integer data) throws InterruptedException {
blockingQueue.put(data);
System.out.println("添加进去了数据" + data);
}
}
}
面试手撕代码-消费者生产者模式_利用BlockingQueue实现
最新推荐文章于 2026-06-22 10:47:39 发布

842

被折叠的 条评论
为什么被折叠?



