2015-06-17 64 views
0

是否可以使用相同的JAMon Monitor類來監視不同的處理步驟?例如,在代碼示例中,我想測量「Point1」和「Point2」的執行時間。但是,該示例僅返回有關第二步的統計信息。當然,我可以創建多個Monitor類型的對象。但也許有一個更清潔的方式?在Java應用程序監視器(JAMon)中使用多個標籤

Monitor mon = null;  
for(int i =0; i < 1000; i++){ 
    //Part1 
    mon = MonitorFactory.start("Point 1"); 
    Thread.sleep(2); 
    mon.stop();  

    //Part2 
    mon = MonitorFactory.start("Point 2"); 
    mon.stop(); 
} 

System.out.println(mon.toString()); 

輸出:

火腿標籤= 2點,單位= MS:(LastValue = 0.0,點擊數= 1000.0, 平均= 0.001,總= 1.0,最小= 0.0,最大值= 1.0,Active = 0.0,Avg Active = 1.0, Max Active = 1.0,First Access = Wed Jun 17 10:40:44 CEST 2015,Last Access = Wed Jun 17 10:40:46 CEST 2015)

所需輸出:

JAMon標籤=點1,單位= ms .:(LastValue = 0.0,Hits = 1000.0, Avg = 0.001,Total = 1.0,Min = 0.0,Max = 1.0,Active = 0.0,Avg Active = 1.0, 最大活動= 1.0,第一次訪問=週三6月17日十點40分44秒CEST 2015年,最後 訪問=週三6月17日十點四十分46秒CEST 2015年)

火腿標籤= 2點,單位= MS: (LastValue = 0.0,Hits = 1000.0, Avg = 0.001,Total = 1.0,Min = 0.0,Max = 1.0,Active = 0.0,Avg Active = 1.0, Max Active = 1.0,First Access = Wed Jun 17 10:40 :44 CEST 2015,Last Access = Wed Jun 17 10:40:46 CEST 2015)

回答

0

您可以將顯示器的toString()調用更改爲明確的getMonitor(...)調用。

Monitor mon = null; 

for(int i =0; i < 1000; i++){ 
    //Part1 
    mon = MonitorFactory.start("Point 1"); 
    Thread.sleep(2); 
    mon.stop();  

    //Part2 
    mon = MonitorFactory.start("Point 2"); 
    mon.stop(); 
} 

System.out.println(MonitorFactory.getMonitor("Point 1").toString()); 
System.out.println(MonitorFactory.getMonitor("Point 2").toString()); 

或者您可以創建2個監視器。

Monitor mon1 = null; 
Monitor mon2 = null;  

for(int i =0; i < 1000; i++){ 
    //Part1 
    mon1 = MonitorFactory.start("Point 1"); 
    Thread.sleep(2); 
    mon1.stop();  

    //Part2 
    mon2 = MonitorFactory.start("Point 2"); 
    mon2.stop(); 
} 

System.out.println(mon1.toString()); 
System.out.println(mon2.toString()); 
0

有比其他答案一個更好的辦法:

for(Object monitor: MonitorFactory.getMap().values()){ 
    System.out.println(monitor); 
} 

這將打印所有使用監視器,直到如今。在所有線程中。正是你想要的。

您可以檢查完成的代碼示例並輸出here