会话 - 超时 - 空闲处理Java中的多线程

时间:2012-10-21 21:16:12

标签: java multithreading session timeout

我正试图让我的头脑绕过会话 - 超时 - 闲置处理Java中的多步骤。

我有一台服务器&客户端应用程序通过telnet进行通信,我需要检查用户是否一直在键入(任何内容),单击(任意位置),或者在一段时间内移动鼠标。

如果没有,将提示用户一个对话框,询问他是否想要进行会话。 ...(如果没有,用户将在下一分钟左右自动退出。)

我的应用程序有多个线程。 ( - 每个线程一个用户)。所以我不确定如何以最好的方式(且最简单的)来评估这种方式?

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

在main函数中创建类Thread和作为constuctor参数设置此类importatnt后的Session类实例.start()

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

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

答案 1 :(得分:0)

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