计时器Java代码不起作用
public interface IncDec
{
void increment();
void decrement();
}
public class MyIncDec implements IncDec
{
private int x;
public MyIncDec(int x) {
this.x = x;
}
public void increment() {
this.x++;
}
public void decrement() {
this.x--;
}
}
第1部分:实现一个类,该类可用于测量每次调用增量和减量方法所需的时间(in 毫秒)并打印出这些信息。该类应该或多或少地透明地与IncDec接口的现有客户端相匹配。
我的解决方案:
public class Test{
public static void main(String[] args){
MyIncDec mid = new MyIncDec(4);
long l1;
long l2;
l1 = Calendar.getInstance().getTimeInMillis();
mid.increment();
l2 = Calendar.getInstance().getTimeInMillis();
System.out.println(l2-l1);
}
}
我的解决方案给我时间差异为0.当我在调用'增量'后显示n之前的长值时,它们是相同的。为什么这样?
假设我不得不为应用程序中的许多地方做类似的事情(方法调用的时间)。一个想法是为所有不同的方法编写一个单独的计时器类。有没有人有另一个优化的想法来更方便地获得计时?
答案 0 :(得分:1)
首先,你的时间差为0,因为运行时间可能不到1毫秒。尝试在Thread.sleep(50)
方法中添加increment
,看看是否有变化。
public void increment() {
try { Thread.sleep(50); } catch (InterruptedException e) { }
this.x++;
}
其次,你的家庭作业可能希望你在课堂上使用IncDec
界面计算你的时间。所以考虑到这一点。了解界面是什么,它们用于什么,更重要的是,如何使用。
答案 1 :(得分:1)
我认为你的作业建议你使用Proxy Pattern
我不打算给你完整的解决方案,但这里有一个提示:
public class MyIncDecProxy implements IncDec{
MyIncDec incDec;
public MyIncDecProxy(int x){
//Initialise incDec
}
public void increment() {
// Wrap the method of incDec implementing your timer
}
public void decrement() {
//ditto
}
}
然后,您将使用MyIncDecProxy类而不是MyIncDec
答案 2 :(得分:-1)
mid.increment()
的单个调用。或者是以纳秒为单位的测量时间。