Szukałem dużo, ale nie mogłem znaleźć rozwiązania. użyć javy puli wątków w taki sposób:Określanie kolejności wykonywania zadań w Javie
ExecutorService c = Executors.newFixedThreadPool(3);
for (int i = 0; i < 10; ++i) {
c.execute(new MyTask(i));
}
w ten sposób zadania są wykonywane w konsekwencji kolejności (jak w kolejce). Ale potrzebuję zmiany strategii "wybierz następne zadanie". Dlatego chcę przypisać do każdego zadania określić priorytet (nie jest to priorytet wątku), a zadania wykonania odpowiadają tym priorytetom. Tak więc, gdy wykonawca zakończył inne zadanie, wybiera następne zadanie jako zadanie o najwyższym priorytecie. Opisano typowy problem. Być może istnieje prostsze podejście, które nie uwzględnia priorytetów. Wybiera ostatnie dodane zadanie jako obok wykonania zamiast pierwszego dodanego. Z grubsza rzecz biorąc FixedThreadPool wykorzystuje strategię FIFO. Czy mogę użyć np. Strategii LIFO?
+1 może podać fragment kodu, aby to poprawić. – Tudor
To nie może działać, ponieważ 'newTaskFor' zawinie zadanie ComparableFutureTask w FutureTask, co nie jest porównywalne. Musisz także zastąpić dwie metody 'newTaskFor'. – assylias
Zobacz [ten post] (http://stackoverflow.com/a/16834473/829571) dla uproszczonego przykładu. – assylias