java线程 如何监控用户操作超时

miomoe 2010-04-10 10:09:29
正在写一个简易银行卡管理程序,基本功能已经完成,现在想要完成的是:
当用户1分钟内没有操作的话,就弹出警告对话框,然后自动logout!

相关的类主要有:MainFrame.java(主界面、JFrame)、ValidateUser.java(JPanel,已添加到MainFrame的contentPane上)、其它功能(存、取款、查询、转账等,也都是JPanel)


我目前的想法是:

MainFrame中写一个后台线程(名字是:timeLimited,我把它设置为了public static,以便在ValidateUser中执行操作)(设一个变量operTime=60,线程运行时,不断重复operTime--、TimeUnit.SECONDS.sleep(1);直到为0,强制logout)

监视用户操作(主要是按钮、文本框输入,MainFrame中一旦有actionPerformed、keyPressed操作,就让线程wait();一旦有keyReleased,就notify,重新计时)

ValidateUser中的登录、logout按钮也要实现对此记时线程的控制


由于对线程、锁的概念掌握还不好,用的语句都是timeLimited.wait();timeLimited.notify();(我知道这样不对,但不知道具体怎么改)

运行时产生异常:
Exception in thread "Thread-5" java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at Main.MainFrame.monitorWait(MainFrame.java:215)
at Main.MainFrame$operateLimited.run(MainFrame.java:72)
at java.lang.Thread.run(Thread.java:619)

求教:如何解决问题?!谢谢……(最好能给出线程相关的代码)
...全文
255 4 打赏 收藏 转发到动态 举报
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
奋斗并快乐着 2010-04-13
  • 打赏
  • 举报
回复
不用wait吧 在任何你认为是用户操作的地方都重新计时

wait 和notify之前都要synchronized操作对象

线程控制用一个变量控制容易一些
miomoe 2010-04-11
  • 打赏
  • 举报
回复
没人要分么…………
miomoe 2010-04-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 nihaozhangchao 的回复:]
如果可以的话把代码发到我的
heigegaojian@163.com

msn:gjhohj@live.cn
[/Quote]
我主要是想看看大家给出的思路,有哪些解决方法……最后还是我自己去调试通过!
讲讲方法即可!
SambaGao 2010-04-10
  • 打赏
  • 举报
回复
如果可以的话把代码发到我的
heigegaojian@163.com

msn:gjhohj@live.cn
相关推荐

62,568

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告