代码之家  ›  专栏  ›  技术社区  ›  jagamot

多线程应用程序-一些伪代码的帮助!

  •  1
  • jagamot  · 技术社区  · 16 年前

    我正在开发一个多线程应用程序,需要一些伪代码的帮助。为了简化实现,我将尝试用简单的术语/测试用例来解释这一点。

    下面是一个场景-

    我有一个字符串数组列表(比如100个字符串)

    我有一个Reader类,它读取字符串并将其传递给Writer类,Writer类将字符串打印到控制台。现在,它在单线程模型中运行。

    我想让这个多线程,但有以下特点-

    设置最大读卡器的能力

    能够设置MAX_WRITERS

    能够设置批量大小

    因此,基本上,代码应该实例化这些读者和作者,并并行地完成工作。

    任何伪代码都会让我继续前进!

    2 回复  |  直到 16 年前
        1
  •  3
  •   ilikeorangutans    16 年前

    这听起来像是典型的消费者-生产者问题。看看 Wikipedia's article 关于它。那里有大量的伪代码。

        2
  •  0
  •   Community Mohan Dere    9 年前

    除了使用 producer-consumer pattern 有人建议,我建议你使用 CopyOnWriteArrayList 因此,您可以对列表进行无锁读/写/迭代。因为您只处理几百个字符串,所以可能不会有任何性能问题 CopyOnWriteArrayList .

    如果你关心性能,那么我实际上认为如果你使用 BlockingQueue 或者 ConcurrentHashMap 。它们将使多线程应用程序的吞吐量最大化。


    建议的选项是:
    A. BlockingQueue 可以很好地与多个生产者和消费者合作,但这当然意味着数据处理顺序(FIFO)。如果你同意FIFO排序,那么你可能会发现 封锁队列 是一种更快、更稳健的选择。


    我认为维基百科的文章有足够的伪代码供您使用,但您也可以查看以下一些问题:
    https://stackoverflow.com/search?q=java+producer+consumer

    Java生产者消费者设计:
    Producer/Consumer threads using a Queue
    design of a Producer/Consumer app