Java StopWatch挂起和恢复计时器不起作用

星期

以下代码的目的是测试StopWatch的复位,启动,挂起和恢复。应该有可能在给定的时间点暂停秒表,然后再恢复。在这种情况下,经过时间是当计时器最终停止时所有暂停和恢复事件的累积总数。如果我删除了timer.suspend()和timer.resume(),代码可以正常工作。当我运行代码时,线程进入睡眠状态达2.3秒,并在输出中给出经过的时间2300。但是,使用suspend and resume方法,它将休眠2.3秒,但输出为0。

您能建议/建议代码中有什么问题吗?

谢谢你。

 interface StopWatch {

public void reset();
public void start();
public void stop();
public void suspend();
public void resume();
public long getElapsedTime();
public int getState();
public static final int RESET = 0, RUNNING =1, STOPPED =2, SUSPENDED = 3, RESUME = 0;}

计时器类

class Timer implements StopWatch{
private long startTime;
private long elaspedTime;
private int state;
public Timer(){reset();}

public void reset(){
    state = RESET;
    elaspedTime = 0;
}
public void start(){
    if(state==RESET){
        startTime = System.currentTimeMillis();
        state = RUNNING;
        }
}     

公共无效stop(){

    if(state == RUNNING){
        elaspedTime = System.currentTimeMillis() - startTime;
        state = STOPPED;
    }
}
public void suspend() {
    if(state == RUNNING){
        elaspedTime = System.currentTimeMillis() - startTime;
        state = SUSPENDED;
    }
}
public void resume(){

    if(state == RUNNING){
        elaspedTime = System.currentTimeMillis() - startTime;
        state = RESUME;
    }
}

public long getElapsedTime() {
    if(state == RUNNING){
        long elasped = System.currentTimeMillis() - startTime;
        return elasped;
    }
    else if (state == STOPPED)
        return elaspedTime;

    else if (state == RESUME)
        return elaspedTime;
    return 0;
}
public int getState(){
    return state;
}}

秒表测试

 public class StopWatchTest {
        public static  void main (String[] args){
        Timer timer = new Timer();
        timer.start();
        try{
            Thread.sleep(2300);
            timer.suspend();
            timer.resume();
        }catch (InterruptedException e){}
        timer.stop();
        long duration = timer.getElapsedTime();
        System.out.println(duration);
    }}
johnathenwhiter94
if(state == RUNNING){
    elaspedTime = System.currentTimeMillis() - startTime;
    state = RESUME;
}

resume您正在检查秒表是否正在运行的方法中,如何恢复已经运行的秒表?

更改RUNNINGSUSPENDED您的resume方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的Java计时器不起作用?

来自分类Dev

重置倒数计时器不起作用+ Java Swing游戏中的JDialog / JOptionPane

来自分类Dev

SwingWorker Java Swing中的计时器应用程序不起作用

来自分类Dev

Java计时器如何在胁迫下起作用?

来自分类Dev

Java计时器和计时器任务:在计时器外部访问变量

来自分类Dev

Java计时器和计时器任务:在计时器外部访问变量

来自分类Dev

Java线程挂起不起作用

来自分类Dev

JavaScript计时器不起作用

来自分类Dev

角度计时器不起作用

来自分类Dev

秒表(计时器)不起作用

来自分类Dev

角度计时器不起作用

来自分类Dev

计时器不起作用

来自分类Dev

倒数计时器不起作用

来自分类Dev

倒数计时器不起作用

来自分类Dev

Java获取器和设置器不起作用

来自分类Dev

停止Java计时器

来自分类Dev

关于Java计时器

来自分类Dev

Java计时器任务

来自分类Dev

计时器和动作在Java中执行

来自分类Dev

在Glass上运行计时器,秒表和指南针示例似乎不起作用

来自分类Dev

Java编译器不起作用

来自分类Dev

Java 8 比较器不起作用

来自分类Dev

C#计时器不起作用?

来自分类Dev

C#计时器不起作用

来自分类Dev

Android SDK计时器不起作用

来自分类Dev

倒数计时器onTick方法不起作用

来自分类Dev

快速无效计时器不起作用

来自分类Dev

计时器间隔不起作用的Javascript

来自分类Dev

计时器onReceive在NavigationView中不起作用