Java秒表暂停和恢复计时器不工作

Java秒表暂停和恢复计时器不工作,java,stopwatch,Java,Stopwatch,以下代码的目的是测试秒表的复位、启动、暂停和恢复。应该可以在给定的时间点暂停秒表,稍后再恢复。在这种情况下,消失时间是计时器最终停止时所有挂起和恢复事件的累积总数。如果我删除timer.suspend()和timer.resume(),代码工作正常。当我运行代码时,线程进入睡眠状态2.3秒,并在输出中给出运行时间2300。然而,使用suspend and resume方法,它休眠2.3秒,但输出为0 你能建议一下代码中的错误吗 多谢各位 interface StopWatch { publi

以下代码的目的是测试秒表的复位、启动、暂停和恢复。应该可以在给定的时间点暂停秒表,稍后再恢复。在这种情况下,消失时间是计时器最终停止时所有挂起和恢复事件的累积总数。如果我删除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;
        }
}     
公共停车场(){

秒表试验

 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);
    }}
resume
方法中,您正在检查秒表是否正在运行,如何恢复已经运行的秒表


在你的
resume
方法中将
RUNNING
更改为
SUSPENDED

非常感谢。我已经更改为SUSPENDED。现在,它给我的不是0输出,而是2300,我已经为线程设置了。Sleep(2300)…因此,我不确定如何将程序再挂起2.3秒,并获得运行时间4.6秒(thread sleep 2.3+suspend 2.3)?提前谢谢。不客气,如果我的答案回答了您的问题,请勾选我答案旁边的复选标记。
 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);
    }}
if(state == RUNNING){
    elaspedTime = System.currentTimeMillis() - startTime;
    state = RESUME;
}