package com.sohu.cache.machine; import com.google.common.collect.ComparisonChain; import java.util.Comparator; /** * 选择机器时根据机器的memory、traffic和load进行排序; * 在memory满足的情况,排序规则是:traffic > load > memory * * @author: lingguo * @time: 2014/9/17 12:04 */ public class MachineProperty implements Comparator<MachineProperty> { private long hostId; private long memory; private double traffic; private double load; public MachineProperty() {} public MachineProperty(long hostId, long memory, double traffic, double load) { this.hostId = hostId; this.memory = memory; this.traffic = traffic; this.load = load; } public long getHostId() { return hostId; } public void setHostId(long hostId) { this.hostId = hostId; } public long getMemory() { return memory; } public void setMemory(long memory) { this.memory = memory; } public double getTraffic() { return traffic; } public void setTraffic(double traffic) { this.traffic = traffic; } public double getLoad() { return load; } public void setLoad(double load) { this.load = load; } @Override public int compare(MachineProperty o1, MachineProperty o2) { return ComparisonChain.start() .compare(o1.traffic, o2.traffic) .compare(o1.load, o2.load) .compare(o2.memory, o1.memory) .result(); } }