public static List<Double> getTimesBeforeHostShutdown(List<Host> hosts) { //获取主机关闭之前的时间,即开机时间。参数:主机列表。返回:主机关闭之前的时间列表。
List<Double> timeBeforeShutdown = new LinkedList<Double>(); //实例化一个double类型的列表集合--timeBeforeShutdown
for (Host host : hosts) { //第一层增强for循环遍历主机列表集合(依次遍历主机列表中的每个主机)
boolean previousIsActive = true; //以前是否似活跃的
double lastTimeSwitchedOn = 0; //上次开机时间
for (HostStateHistoryEntry entry : ((HostDynamicWorkload) host).getStateHistory()) { //第二层增强for循环遍历主机状态历史记录集合(依次遍历主机状态历史记录表中的每个历史状态)
if (previousIsActive == true && entry.isActive() == false) { //判断以前是否是活跃的并且当前历史状态是否是活跃的,如果以前是活跃的并且当前历史状态是非活跃的
timeBeforeShutdown.add(entry.getTime() - lastTimeSwitchedOn); //通过当前时间减去上次开机时间得到主机关机之前时间,并将值添加到列表集合(timeBeforeShutdown)
}
if (previousIsActive == false && entry.isActive() == true) { //判断以前是否是活跃的并且当前历史状态是否是活跃的,如果以前是非活跃的并且当前历史状态是活跃的
lastTimeSwitchedOn = entry.getTime(); //将当前历史状态的时间赋值给上次开机时间(lastTimeSwitchedOn)
}
previousIsActive = entry.isActive(); //将当前历史状态是否活跃赋值给以前是否活跃(previousIsActive),以便进行下个历史状态的循环
}
}
return timeBeforeShutdown; //返回主机关闭之前的时间的(Double)列表集合,即主机开机时间集合
}
该方法的功能:得到主机的开机时间(活跃时间)。