【发布时间】:2017-04-16 15:41:45
【问题描述】:
我正在编写一个需要同时监控多台机器的 java 程序。这个数字不是固定的,它可以在程序执行过程中随时变化(增加/减少)。
我正在考虑做这样的事情:
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 秒。
谁能给我一些建议?
【问题讨论】:
-
我有个主意,我需要你的代码在你的机器类中
标签: java multithreading parallel-processing