java - 20秒后不活动结束会话

时间:2013-03-05 10:17:43

标签: java timer session-timeout

大家。

我正在实现一种类似于基于自定义计时器的会话。它是一个具有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(){//}
}

的Singleton

1 个答案:

答案 0 :(得分:0)

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

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

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