0

每个人。

我正在实现一种类似于自定义计时器的会话。这是一个具有 start()、pause()、resume() 和 stop() 的单例类。我想要实现的是会话超时。比如说,如果调用了 pause() 并且 20 秒后没有调用 resume(),我想调用 stop() 来结束该会话。

任何想法如何实现这一点?

谢谢。

编辑:

不是真正的计时器,它更像是这样的秒表计时器:

public class MyTimer{
    private long startTime;
    private long endTime;

    public MyTimer getInstance(){//singleton}

    public void start(){//}
    public void stop(){//}
    public void resume(){//}
    public void pause(){//}
}

辛格尔顿

4

1 回答 1

0

为要超时的每个线程使用计时器,或者:

  • 让每个线程都有自己的超时计数器
  • 在单独的线程上,定期(通过计时器)迭代您的线程并查找自上次计时器重置操作以来的秒数
  • 只要线程的时间用完就停止()线程,否则增加秒数

尽管如此,stop()-ping 线程可能会导致各种问题。更好的是定期检查信号并将信号设置为“应该停止”并让线程自行终止。

于 2013-03-05T10:29:15.170 回答