Java,系统架构,正确实现

标签 java architecture implementation

我不是java专家,我的问题有点抽象,我需要关于如何最好地实现我建议的架构和要求的建议。

我将描述我的要求:

我有一个管理器对象,它接收要处理的任务(保存一个任务队列),管理器应该在专用线程之间分配任务。每个线程都知道只执行特定类型的任务。

我创建了一个主管理器类,其中包含特定类型线程的集合, 当主管理器收到新任务时,它将把任务推送到知道如何处理该任务的线程类对象的队列中(每个线程都有自己的任务队列)。

线程在处理完前一个任务后需要从队列中池化一个任务,但如果队列为空,则该线程不应该使用资源,并且需要在新任务到达时被唤醒。

我的想法(可能不太好)是使用扩展计时器对象的线程并执行检查其队列的定时任务,但这不符合我在新任务到达之前释放资源的要求。

任何有关处理这些系统要求的最佳方法的建议将不胜感激(我的问题不是作业,而是我开发任务的一部分)。

编辑

(对@Alexander Torsdling的回答)我当前使用阻塞队列作为任务队列,我的问题不是并发问题而是架构问题,我想在队列为空时释放资源并且我想如果有新任务到达,可能会通过事件唤醒,如果我已经完成了一个任务的处理并且我还有更多任务,我将继续处理下一个任务;

最佳答案

看看BlockingQueue 。为了避免创建太多线程,您可能需要考虑使用 Executor ,它可以为您管理线程池。

关于Java,系统架构,正确实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11778260/

相关文章:

ruby - Ruby MRI 是什么样的解释器?

c++ - std::vector 不保留在实现中实例化的推回对象

c# - TargetedPatchingOptOut 和抽象方法的其他属性

java - 如何替换 JTextField 中预先输入的字符(一次一个)?

java - 处理不同环境的注解驱动的依赖注入(inject)

java - 如何统计字符串中括号(包括括号)的内容

MySQL架构: null columns vs.加入

java - 如何在 Android 上以编程方式使用 View

java - 适合有抱负的 Java 技术架构师的好网站

具有多个持久层的 PHP DataMapper