add getLimitResult function

judge whether reach limit
This commit is contained in:
liuchongrui 2014-09-25 14:50:22 +08:00
parent 89b6e39e0c
commit 259fe8caa0
1 changed files with 39 additions and 3 deletions

View File

@ -6,6 +6,7 @@ import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import java.util.concurrent.ExecutionException;
import java.util.jar.Attributes.Name;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@ -31,7 +32,8 @@ public class MonitorMain extends SampleModel {
private ProcessModel processModel;
@XmlElement(name = "touch_limit")
private boolean isTouchLimit;
@XmlElement(name = "reach_limit")
private boolean isReachLimit;
private SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd-HH-mm-ss");
@ -59,8 +61,42 @@ public class MonitorMain extends SampleModel {
System.out.println(System.currentTimeMillis() - startTime);
}
public MonitorMain(LimitModel limitModel) {
public MonitorMain(LimitModel limitModel) throws SigarException {
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
this.date = dateFormat.format(new Date());
long startTime = System.currentTimeMillis();
List<Thread> threadList = new ArrayList<Thread>();
threadList.add(new Thread(new ProcessModel(this)));
threadList.add(new Thread(new PhysicalDiskModel(this)));
threadList.add(new Thread(new ProcessorModel(this)));
threadList.add(new Thread(new NetworkInterfaceModel(this)));
for (Thread thread : threadList)
thread.start();
memoryModel = new MemoryModel();
boolean threadIsAlive = true;
while (threadIsAlive) {
threadIsAlive = false;
for (Thread thread : threadList) {
if (thread.isAlive())
threadIsAlive = true;
}
}
this.isReachLimit = getLimitresult(limitModel);
System.out.println(System.currentTimeMillis() - startTime);
}
private boolean getLimitresult(LimitModel limitModel) throws SigarException {
//LimitableFieldsModel limitableFieldsModel = new LimitableFieldsModel();
boolean limitResult = false;
List<LimitModel.ParameterModel> list = limitModel.getParams();
for (int i = 0; i < list.size(); i++){
String name = list.get(i).getName();
double limit = list.get(i).getLimit();
if (name.equals("memoryUsedPercent"))
if (limit <= this.memoryModel.getMemoryUsedPercent())
limitResult = true;
}
return limitResult;
}
public void setProcesssModel(ProcessModel processModel) {