我不是 java 专家,我的问题有点抽象,我需要一个关于如何最好地实现我建议的架构和要求的建议。
我将描述我的要求:
我有一个管理器对象,它接收要处理的任务(持有一个任务队列),管理器应该在专用线程之间分配任务。每个线程都知道只执行特定类型的任务。
我创建了一个带有特定类型线程集合的主管理器类,当主管理器接收到一个新任务时,它会将任务推送到知道如何处理此任务的线程类对象的队列中(每个线程都有自己的任务队列)。
一个线程在处理完之前的任务后需要从他的队列中池化一个任务,但是如果队列是空的,他不应该使用资源并且需要在新的任务到达时被唤醒。
我虽然(可能不太好)是使用扩展计时器对象的线程并执行检查其队列的定时任务,但这不符合我在新任务到达之前释放资源的要求。
任何有关处理这些系统要求的最佳方法的建议都将不胜感激(我的问题不是家庭作业,而是我开发任务的一部分)。
编辑
(对@Alexander Torstling 的回答)我目前正在使用阻塞队列作为任务队列,我的问题不是并发问题,而是架构问题,我想在队列为空时释放资源并且我想被唤醒如果有新任务到达,如果我已经完成了一个任务的处理并且我有更多任务,我将继续处理下一个任务;