import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
class Entity {
private int pid;
private double usage;
public Entity(int pid, double usage) {
this.pid = pid;
this.usage = usage;
}
public int getPid() {
return pid;
}
public double getUsage() {
return usage;
}
}
public class Main {
public static void main(String[] args) {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
List<Entity> previousList = new ArrayList<>();
executor.scheduleAtFixedRate(() -> {
List<Entity> currentList = generateRandomList();
double totalUsageDiff = calculateTotalUsageDiff(previousList, currentList);
double totalUsage = calculateTotalUsage(currentList);
double percentage = totalUsageDiff / totalUsage * 100;
System.out.println("Percentage of usage change in 2 minutes: " + percentage + "%");
previousList = currentList;
}, 0, 2, TimeUnit.MINUTES);
}
private static List<Entity> generateRandomList() {
// 这里模拟生成随机的实体类列表,实际应用中应从数据源获取
List<Entity> list = new ArrayList<>();
list.add(new Entity(1, Math.random() * 100));
list.add(new Entity(2, Math.random() * 100));
return list;
}
private static double calculateTotalUsageDiff(List<Entity> previousList, List<Entity> currentList) {
double totalDiff = 0;
for (Entity currentEntity : currentList) {
for (Entity previousEntity : previousList) {
if (currentEntity.getPid() == previousEntity.getPid()) {
totalDiff += currentEntity.getUsage() - previousEntity.getUsage();
break;
}
}
}
return totalDiff;
}
private static double calculateTotalUsage(List<Entity> list) {
double totalUsage = 0;
for (Entity entity : list) {
totalUsage += entity.getUsage();
}
return totalUsage;
}
}