26得票3回答
Java如何避免在循环中使用Thread.sleep()

从我的主函数中,我启动了两个线程,称为生产者和消费者。两个线程都包含while(true)循环。生产者循环是UDP服务器,因此不需要睡眠。我的问题在于消费者循环。消费者循环从链式队列中删除对象,并将其传递给一个函数进行进一步处理。根据我的研究,在循环中使用线程睡眠并不是一个好习惯,因为有时操作...

21得票5回答
将任务添加到ThreadPoolExecutor的BlockingQueue中是否可行?

针对JavaDoc中ThreadPoolExecutor的说明不明确,无法确定直接向支持执行器的BlockingQueue添加任务是否可以接受。然而文档中提到,调用executor.getQueue()主要用于调试和监控。 我使用自己的BlockingQueue构建了一个ThreadPool...

21得票5回答
RabbitMQ:快速生产者和缓慢消费者

我有一个应用程序,它使用RabbitMQ作为消息队列,在两个组件:发送器和接收器之间发送/接收消息。 发送者以非常快的方式发送消息。 接收者接收消息,然后执行一些非常耗时的任务(主要是对非常大的数据大小进行数据库写入)。 由于接收者需要很长时间才能完成任务,然后从队列中检索下一条消息,因此发送...

21得票5回答
Java阻塞队列与批处理?

我对与Java BlockingQueue完全相同的数据结构感兴趣,但是它必须能够将队列中的对象分批处理。换句话说,我希望生产者能够将对象放入队列中,但是在消费者获取元素之前,必须等待一定数量(即批量大小)的对象进入到队列中。 一旦队列达到批量大小后,生产者必须等待消费者消费完队列中的所有元...

20得票4回答
一个Kafka消费者是否可以在从主题中轮询所有消息之前过滤消息?

据说消费者只能读取整个主题。无法在经纪人上执行评估以过滤消息。 这意味着我们必须从主题中接收/消费所有消息,并在客户端过滤它们。 这太过繁琐了。我在想是否可以基于已传递给经纪人的某些信息(例如消息键或其他内容)来过滤和接收特定类型的消息。 从方法Consumer.poll(timeout...

18得票4回答
如何在多线程生产者消费者模式中使工作线程在完成任务后退出?

我正在尝试使用Python 2.7中的Queue.Queue实现多线程生产者-消费者模式。我正在努力想出如何使消费者(即工作线程)在完成所有必需的工作后停止。 请参见Martin James对此答案的第二条评论:https://dev59.com/amIk5IYBdhLWcg3wU82o#1...

18得票4回答
Go:一个生产者多个消费者

我看过很多在Go中实现一个消费者和多个生产者的方法,其中包括来自Go并发讲座的经典fanIn函数。 我想要的是一个fanOut函数。它以一个读取值的通道作为参数,并返回一个通道切片,将该值的副本写入其中。 是否有正确/推荐的实现方式?

17得票3回答
如何分批消费 BlockingCollection<T>

我已经写了一些代码来消费队列中所有的等待项。与其逐个处理这些项目,按集合方式处理所有等待的项目更有意义。我这样声明了我的队列。private BlockingCollection&lt;Item&gt; items = new BlockingCollection&lt;Item&g...

17得票2回答
查找我是否在Unity线程上。

如何检查当前线程是否为Unity线程? 我尝试在构造函数中捕获线程ID,但是程序的生命周期中线程ID会发生变化。 在我的项目中,一些辅助线程需要访问新创建的对象。 我使用生产者-消费者模式,以便它们可以在Unity线程上创建。 一个对象工厂将请求排队,在 Update() 时我所请求的对象...

16得票1回答
苹果文档中的GCD生产者-消费者解决方案有误?

在苹果的并发编程指南中的“迁移线程”一节中,有一个名为更改生产者-消费者实现的部分,声称可以使用GCD简化典型的多步骤pthread mutex +条件变量实现。通过使用调度队列,您可以将生产者和消费者的实现简化为单个调用。 dispatch_async(queue, ^{ // Pro...