【发布时间】:2014-12-02 11:28:00
【问题描述】:
我对 Java 中的 Thread 非常陌生。在我的应用程序中,我将有一个线程(生产者),它将对输入数据进行一些处理,并不断将字符串对象添加到名为 A 的数据结构中(我知道要使用什么),同时,多个消费者线程取出什么在 A 中。每个消费者线程将一次取出一个对象,对其进行处理并放入另一个名为 B 的数据结构中。我已经阅读了有关线程和线程安全数据结构的信息,但我不知道哪种情况最适合我的情况。建议我不要使用 BlockingQueue 之类的阻塞数据结构,但没有很好地解释原因。有人可以向我解释为什么并向我推荐适合 A 和 B 的数据结构吗?
我正在考虑为 A 使用 LinkedList,为 B 使用 Treeset。我在正确的轨道上吗?
【问题讨论】:
-
听起来 BlockingQueue 非常适合您的目的。我假设您正在为一堂课这样做,并且您的老师可能希望您构建自己的 BlockQueue ADT 版本。如果您对如何执行此操作感到困惑,您可能应该向您的老师寻求进一步的帮助
-
在多线程从 A 中取出对象时,您介意向我解释一下 BlockingQueue 是如何工作的吗?哦,顺便说一句,这不是课堂作业,也不是为了构建我自己的 BlockQueue 版本。在我的实习工作中的一项职能中需要它。
-
生产者可以放入对象,消费者可以从中提取对象的数据结构的通用名称是pool。队列、堆栈、堆、集合和多集合……都是不同种类的池,它们对可以进入池的内容有不同的规则,对事物出来的顺序有不同的规则。当它们不用于线程之间的通信时,相同的数据结构通常称为 containers 或 collections。
-
请查看我对我的实施草案的新更新...看起来还可以吗?
标签: java multithreading