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

我将描述我的要求:

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

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

当线程完成处理上一个任务时,线程需要从其队列中缓冲一个任务,但是如果队列为空,则他不应使用资源,并且在新任务到达时应将其唤醒。

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

对解决这些系统需求的最佳方法的任何建议将不胜感激(我的问题不是家庭作业,而是我正在开发的任务的一部分)。

编辑

(@Alexander Torstling的答案)我目前正在使用阻塞队列作为任务队列,我的问题不是并发问题,而是架构问题,我想在队列为空时释放资源,并且想唤醒如果有新任务到来,如果我已经完成一个任务的处理并且我有更多的任务,那么我将继续处理下一个任务;

最佳答案

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

09-30 17:43
查看更多