1

我正试图了解会话-超时-空闲处理Java中的多线程。

我有一个服务器和客户端应用程序通过 telnet 进行通信,我需要检查用户是否在一段时间内输入(任何内容)、单击(任何地方)或移动鼠标。

如果没有,用户将收到一个对话框提示,询问他是否要继续会话。...(如果没有,用户将在下一分钟左右自动注销。)

我的应用程序有多个线程。( - 每个线程一个用户)。所以我不确定如何以最好的(也是最简单的)方式来解决这个问题?

我知道这是一个广泛而牵强的问题,但我希望你们中的一些人能给我一个正确方向的指针或提示...... :)

我有点希望有一个简单的方法可以检查:(有点伪代码:)

if (idle = true){
timer.start();
if (timer > 120sec)
displayWaringJFrame("Continue Session?  - YES or NO ?)
displayTimer.start();
if (displayTimer > 30sec)
application.user.closeSession()

...或类似的东西!:)

4

2 回答 2

2

最简单的解决方案是类 java.lang.Thread。

您可以创建类并实现接口 Runnable

public class Session implements Runnable{
    public void run(){
        //your code
    }
}

在主函数中创建类 Thread 并作为 Session 类的构造参数集实例,在此重要的是调用方法 .start()

public static void main(String args[]){
    new Thread(new Session()).start();
}

使用线程更方便的方法是 java.util.concurrent.ExecutorService 和 java.util.concurrent.Executors

于 2012-10-21T22:02:43.320 回答
0

一些想法:
1. 如果您想要一个持久计时器,您可以使用Quartz之类的库,然后您可以在一段时间后运行您编写的作业类。您可以取消预定的作业,重新安排等...
2. 您不一定需要每个用户都有一个线程才能工作。计时器对象通常具有处理工作负载的内部线程,可以使用 Quartz 或仅内存的 Java 计时器。

于 2012-10-21T22:16:31.153 回答