springboot 使用LinkedBlockingQueue 模型
时间: 2024-01-16 15:02:54 浏览: 151
在Spring Boot中,LinkedBlockingQueue常用于实现生产者消费者模型,其模型流程如下:
1. 创建一个LinkedBlockingQueue对象,作为生产者和消费者之间的数据缓存区。
2. 创建一个生产者线程,该线程负责往队列中添加元素。
3. 创建一个消费者线程,该线程负责从队列中获取元素。
4. 生产者线程将数据添加到队列中,如果队列已满,则生产者线程会被阻塞,直到队列中有空闲位置可以添加元素。
5. 消费者线程从队列中获取元素,如果队列为空,则消费者线程会被阻塞,直到队列中有元素可以被获取。
6. 生产者和消费者线程通过队列中的元素进行通信和同步,实现数据的生产和消费。
以下是一个使用LinkedBlockingQueue实现生产者消费者模型的示例代码:
```java
public class ProducerConsumerDemo {
public static void main(String[] args) {
LinkedBlockingQueue<Integer> queue = new LinkedBlockingQueue<>(10);
// 创建生产者线程
Thread producer = new Thread(() -> {
try {
for (int i = 0; i < 100; i++) {
queue.put(i);
System.out.println("生产者生产了:" + i);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
});
// 创建消费者线程
Thread consumer = new Thread(() -> {
try {
for (int i = 0; i < 100; i++) {
int value = queue.take();
System.out.println("消费者消费了:" + value);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
});
// 启动生产者和消费者线程
producer.start();
consumer.start();
}
}
```
上述代码中,创建了一个容量为10的LinkedBlockingQueue,生产者线程往队列中添加元素,消费者线程从队列中获取元素,通过队列实现了生产者和消费者的通信和同步。
阅读全文