Я пишу программу Java, которая должна контролировать несколько машин параллельно. Это число не фиксировано, оно может меняться (увеличиваться/уменьшаться) в любое время во время выполнения программы.Использование ExecutorService для параллельной обработки задач
Я думал сделать что-то вроде этого:
public static void main (String args[]) {
ExecutorService EXEC1 = Executors.newScheduledThreadPool(1);
EXEC1.scheduleWithFixedDelay(new Runnable() {
ExecutorService EXEC2 = Executors.new...
Map<Integer, Future<Void>> monitoringTasks = new HashMap<Integer, Future<Void>>();
@Override
public void run() {
List<Machine> monitorizedMachines = MachineDao.getMonitorizedMachines();
for (Machine machine: monitorizedMachines) {
Future<Void> monitoringTask = monitoringTasks.get(machine.getId());
if(monitoringTask == null || monitoringTask.isDone()) {
monitoringTask = EXEC2.submit(new Runnable() {
@Override
public void run() throws Exception {
// monitor machine....
}
});
monitoringTasks.put(machine.getId(), monitoringTask);
}
}
}
}, 1, 1, TimeUnit.SECONDS);
}
Но возникли проблемы собирание наиболее подходящий Исполнителю (EXEC2) для этого случая: FixedThreadPool, CachedThreadPool, заказ реализации, ...
Он должен сказать, что каждая задача мониторинга составляет около 2/3 секунды.
Может ли кто-нибудь дать мне совет?
У меня есть идея, я нужен код в вашем классе машины – toto