如何设计支持无限可暂停任务的生产者-消费者机制?
生产者-消费者模式在无限可暂停任务场景下的设计问题
我正试图理解生产者-消费者模式在可无限执行且可暂停并后续恢复的任务场景下的应用。目前该模式的多数示例都是消费者从生产者填充的队列中获取一次性的单一任务。
但如果任务是无限的呢?例如,当前任务是统计字符串流中特定词汇的出现次数,该流可能无限长(也可能有限);当存在多个字符串流需要处理时,需要一种机制让工作线程交替处理不同流——暂停当前流的处理,交由其他线程继续,再去处理另一个流。
我不确定如何针对该问题基于生产者-消费者模式设计并实现高效的机制,也不清楚是否有其他适用的模式或方法。
我参考过一份生产者-消费者问题的指南,但遇到了具体问题:在指南的4.3节中,如果把示例里的Double类型替换为需要推回至BlockingQueue的Queue<String>,会导致我的消费者同时成为生产者,这显然不符合预期。
内容的提问来源于stack exchange,提问作者TypeMonkey
相关产品推荐
相关产品推荐

