He buscado mucho pero no he podido encontrar ninguna solución. utilizo agrupación de hebras de Java de tal manera:Especifique la ejecución de orden de tareas en Java
ExecutorService c = Executors.newFixedThreadPool(3);
for (int i = 0; i < 10; ++i) {
c.execute(new MyTask(i));
}
de tal modo las tareas se ejecutan en el consiguiente fin (como en la cola). Pero necesito cambiar la estrategia de "seleccionar la siguiente tarea". Por lo tanto, quiero asignar a cada tarea la prioridad especificada (no es prioridad de subprocesos) y las tareas de ejecución corresponden a estas prioridades. Entonces, cuando el ejecutor ha terminado otra tarea, elige la siguiente tarea como tarea con máxima prioridad. Describe el problema común. Tal vez haya un enfoque más simple que no tenga en cuenta las prioridades. Selecciona la última tarea añadida como siguiente para ejecutar en lugar de la primera agregada. En general, FixedThreadPool usa la estrategia FIFO. ¿Puedo usar, por ejemplo, la estrategia LIFO?
+1 tal vez dar un fragmento para que esto sea mejor. – Tudor
Esto no puede funcionar porque 'newTaskFor' envolverá ComparableFutureTask en FutureTask, que no es comparable. También debe anular los dos métodos 'newTaskFor'. – assylias
Ver [esta publicación] (http://stackoverflow.com/a/16834473/829571) para obtener un ejemplo simplista. – assylias