![](/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.