【问题标题】:java - end session after inactivity for 20sjava - 在不活动 20 秒后结束会话
【发布时间】:2013-03-05 10:17:42
【问题描述】:

每个人。

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

单身

【问题讨论】:

  • 使用Timer?
  • 通常ScheduledExecutorService 会是更好的选择,但@Eng.Fouad 是对的。

标签: java timer session-timeout


【解决方案1】:

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

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

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

【讨论】:

  • 嗨,我的班级只有一个实例,因为我使用的是单例。而且它不是在线程上运行的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 2023-03-28
  • 2015-02-04
  • 2013-05-01
  • 1970-01-01
相关资源
最近更新 更多