Concurrency 在GPAR中设置任务或池优先级

Concurrency 在GPAR中设置任务或池优先级,concurrency,groovy,gpars,Concurrency,Groovy,Gpars,我有一些任务应该以不同的优先级执行。 例如,需要尽快完成任务A,但任务B和C可能会晚一点计算,但肯定是在任务A之后。 此外,任务B或C的优先级将来可能会改变 如何使用GPAR实现 真正的商业案例是我需要预先计算一些数据。例如,我有3个选项卡,计算每个选项卡的数据需要30秒。所以,我想首先计算第一个选项卡的数据,然后开始计算第二个和第三个选项卡的数据。无法预测下一步将选择哪个选项卡,因此我必须能够更改第二个和第三个任务的优先级。我建议您尝试使用不同线程优先级的池。为任务设置优先级就变成了在正确的池

我有一些任务应该以不同的优先级执行。 例如,需要尽快完成任务A,但任务B和C可能会晚一点计算,但肯定是在任务A之后。 此外,任务B或C的优先级将来可能会改变

如何使用GPAR实现


真正的商业案例是我需要预先计算一些数据。例如,我有3个选项卡,计算每个选项卡的数据需要30秒。所以,我想首先计算第一个选项卡的数据,然后开始计算第二个和第三个选项卡的数据。无法预测下一步将选择哪个选项卡,因此我必须能够更改第二个和第三个任务的优先级。

我建议您尝试使用不同线程优先级的池。为任务设置优先级就变成了在正确的池(或GPars组)上调度任务。

Vaclav,是否已经实现了这样的池?我试图找到类似的东西,并意识到我可能必须自己编写这样的池。您可能必须使用自定义线程工厂创建一个新池,以调整线程优先级。例如,
def pool=Executors.newFixedThreadPool(10,newthreadfactory(){
`@Override``Thread newThread(final Runnable Runnable){``final Thread t=newThread()`t.setPriority(5)`return t;`}
}