调度问题

时间:2010-10-25 14:41:54

标签: java algorithm jms

在我的项目中,我有两个JMS队列,一个数据队列和一个业务队列。多个线程从这两个队列中读取数据并将其提交到多个引擎的网格。 网格有多个引擎,可以同步和异步方式并行执行任务。

问题陈述:来自业务队列的事件应优先于网格上的数据队列。

这个问题可以通过多种方式解决,但资源利用率应该是最优的,如果可能的话,数据队列中事件的饥饿就不会发生。

一个简单的解决方案是:维护计数器,如果业务事件发生则递增,如果在网格上处理业务事件则递减。如果数据事件到来需要等到计数器达到零(或网格上的最大引擎数)。可以做Sthng来阻止饥饿。

任何更好的利用网格引擎的soln也是最佳的java线程利用率?

1 个答案:

答案 0 :(得分:0)

你是否在读者线程中试过这个:


while(reading from any queue)
{
    while (there are messages in business queue)
    {
        process a business queue message.
    }

    process one data queue message.
}