我正在編寫一個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