我不是一个Java专家,我的问题是有些抽象,我需要怎么是一个最好地执行我的建议的架构和需求的建议。Java中,系统架构,正确实施
我将介绍我的要求:
我有接收任务处理(持有一个任务队列)经理对象,管理者应分配专用线程之间的任务。每个线程知道只执行特定类型的任务。
我创建了一个具有类型特定线程集合的主管理器类 当主管理器接收到一个新任务时,它会将任务推送到知道如何处理此任务的线程类对象的队列中(每个线程有它自己的任务队列)。
一个线程需要从他的队列池中的任务,当他完成处理先前的任务,但如果队列是空的,他不应该使用的资源和需要时,新任务到达被唤醒。
我虽然(可能不太好)是使用线程来扩展计时器对象和检查其队列的定时任务,但这不符合我的要求,直到新任务到达时释放资源。
来处理这些系统的要求可以理解的最佳方式有任何建议(我的问题不是一门功课,而是我的开发任务的一部分)。
编辑
我使用目前一种阻塞队列的任务队列(安以@Alexander Torstling答案),我的问题是不是并发的问题,而是一个建筑,我想免费的资源时,队列是空的,如果新任务到达,我想要被事件唤醒,如果我完成了任务处理,并且我有更多的任务,我将继续处理下一个任务;
什么'爪哇。 util.concurrent'包吗?它包含很多有用的类,可以解决大量的时间。 – gkuzmin 2012-08-02 13:21:06
@迈克尔:我一定误解了你。你说“如果队列是空的,他不应该使用资源”。如果你使用阻塞队列,这正是发生的情况。线程睡觉并且不使用任何资源。当新任务到达时,它立即醒来。这不是你所看到的行为吗? – 2012-08-02 13:49:02
@Alexander Torstling:+1,我很抱歉,我没有”了解阻塞队列的所有功能,并使用它错,你是正确的,这是我需要的东西(正如我说我不是一个Java专家) 。只是为了澄清,如果我有更多的东西要做,但队列是空的,我会睡在queue.take()并不会继续更多的处理语句? – Michael 2012-08-02 13:55:22