java - LinkedBlockingQueue - 生产者/消费者

标签 java multithreading concurrency java.util.concurrent

在一个简单的生产者-消费者场景中,我有 2 个线程围绕 LinkedBlockingQueue 进行管理。

在消费者线程中,我使用 take() 即我想在元素进入队列时阻止消费者。

如果在生产者线程中我使用 offer() 添加到队列而不是 put() 可以吗?这会引起任何问题吗?

我的意思是,使用 take() 是否意味着我也应该使用 put

我想不是,但我想完全确定。

最佳答案

不,无论您在消费者端使用什么,在生产者上使用 offer 都没有问题。

这将是一种常见的机制,允许生产者推送到多个队列之一,它可以在每个队列上调用 offer 直到成功。它甚至可以在最后一个队列上调用 put

关于java - LinkedBlockingQueue - 生产者/消费者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36793754/

相关文章:

java - 为什么来自多个套接字的输入无法正确更新 UI?

java - TimerTask 范围内的所有内容都需要线程安全吗?

在多线程程序中关闭文件描述符

java - 通过锁定在Java中实现线程安全的ArrayList

java - 这是可接受的 "recursive"并发设计吗

Scala - future 不运行

java - Spring Boot 访问静态资源缺少 scr/main/resources

java - Android java http Xml 转换为 Json Caused by : java. lang.NoSuchMethodError: No direct method <init>(Ljava/io/Reader;)

android - SciChart 图不连续

java - 如何创建一个每次请求时都会重新读取的 hibernate 集合?