![](/img/trans.png)
[英]How do I make Thread.sleep() delay the execution time between two methods?
[英]How do I make all my main methods show execution time
自從我用Java編程以來已經有一段時間了,但是我似乎無法解決它,所以對於可能做過的任何愚蠢的事,我事先表示歉意。
我目前正在解決Java中的數學問題列表。 我為每個問題創建一個名為ProblemX的新類。 我希望每個班級打印執行的持續時間。 盡管我會使用一些繼承,但不必在每個單獨的類中進行編程,但這就是我遇到的問題。
Public abstract class Problem{
public static void main(String[]args){
Problem p = new Problem();
long startTime = System.nanoTime();
p.solve();
long endTime = System.nanoTime();
System.out.println("Execution time: " + (endTime - startTime) + " nanoseconds");
}
abstract void solve();
}
這是行不通的,因為我無法在抽象類中創建Problem的實例。 我不能使用Solveable接口,因為當時Problem必須定義'solve'。
顯然,我在這里缺少任何東西,因此如果有人可以幫助,將不勝感激。
怎么樣:
public abstract void solve();
public void solveProblem() {
startTime();
solve();
endTime();
System.out.println(timeTaken);
}
然后只需覆蓋solve並調用solveProblem。
你可以做類似的事情
public abstract class Problem{
long startTime;
long endTime;
public void startTime(){
startTime = System.nanoTime();
}
public void endTime(){
endTime = System.nanoTime();
}
public long measure(){
return endTime - startTime;
}
}
public class ProblemX extends Problem{
public static void main(String[] a){
ProblemX x = new ProblemX();
x.startTime();
//do your work
x.endTime();
System.out.println("time taken" + x.measure());
}
}
大概是這樣嗎?
package com.stackoverflow;
public abstract class Problem {
public static void main(String[] args) {
Problem p = new Problem(){
@java.lang.Override
protected void doCalculation() {
for (int i = 0; i < 1000; i++) {
System.out.println("Printing number... " + i);
}
}
};
p.solve();
System.out.println("Execution time: " + p.getElapsedTime() + " nanoseconds");
}
private long startTime, endTime;
private void doStartTime() {
startTime = getSystemNanoTime();
}
private void doEndTime() {
endTime = getSystemNanoTime();
}
private long getSystemNanoTime() {
return System.nanoTime();
}
protected abstract void doCalculation();
public void solve() {
doStartTime();
doCalculation();
doEndTime();
}
public long getElapsedTime() {
return endTime - startTime;
}
}
假設您有一個ProblemX類,它覆蓋了Problem。 您應該在static main方法中更改以下行:
從:
問題p =新問題(){
@java.lang.Override
protected void doCalculation() {
for (int i = 0; i < 1000; i++) {
System.out.println("Printing number... " + i);
}
}
};
至:
Problem p = new XProblem();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.