我正试图让我的头脑绕过会话 - 超时 - 闲置处理Java中的多步骤。
我有一台服务器&客户端应用程序通过telnet进行通信,我需要检查用户是否一直在键入(任何内容),单击(任意位置),或者在一段时间内移动鼠标。
如果没有,将提示用户一个对话框,询问他是否想要进行会话。 ...(如果没有,用户将在下一分钟左右自动退出。)
我的应用程序有多个线程。 ( - 每个线程一个用户)。所以我不确定如何以最好的方式(且最简单的)来评估这种方式?
我知道这是一个广泛而又牵强的问题,但我希望你们中的一些人可以给我一个正确方向的指针或小费...... :)
我有点希望找到一个可以检查的简单方法: (飞行中有点伪代码:)
if (idle = true){
timer.start();
if (timer > 120sec)
displayWaringJFrame("Continue Session? - YES or NO ?)
displayTimer.start();
if (displayTimer > 30sec)
application.user.closeSession()
......或类似的东西! :)
答案 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定时器。