关于JAVA中自动触发程序,请各位高手提意见,哈,谢了!! 还有一个方法是,每发出一个用户短信,就往数据库里面加条记录,记录里面有发出的时间,然后每分钟check一下DB,看看有没有超时的用户,就给他发短信 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 libin19830213(游戏与娱乐) ( ) 信誉:100 的方法,可以试一下,哈, libin19830213(游戏与娱乐) ( ) 信誉:100 的方法好像不行哦,如果用户答了题,但我不知道他是哪个线程,我没办法停止它了!! libin19830213(游戏与娱乐) 的方法应该没问题lz把发出去的问题和监视他的线程做个映射不就行了 构造一个Container向用户发出一个问题,分配一个UID ,放入Container . 同时启动一个UID名的TIMER (10分种后发答题超时 ,同时从Container 中取出UID ) . 如果用户在10 分种内回答题目, 从Container 取出UID , 业务处理.该UID名的TIMER cancel如果用户在10 分种后回答题目, Container 中已经没有该UID , 业务处理"发答题超时"..... 本人没开发过短信业务 不过有个想法 希望能帮到你 :不用检查客户的答题状态 类似做个时间线程 当你发送题目之后,就启动这个线程,如果接收到客户的答题结果就停止线程,如果没有而且超过10分钟时,可以在线程里触发消息。你看行么?===============================================比起上面这个方法,我更赞同还有一个方法是,每发出一个用户短信,就往数据库里面加条记录,记录里面有发出的时间,然后每分钟check一下DB,看看有没有超时的用户,就给他发短信周期可以缩短无论你是什么服务器 线程达到一定数量结果是什么应该不用说了吧 采用上面的方法,除非在你确认用户量很小,==========================构造一个Container向用户发出一个问题,分配一个UID ,放入Container . 同时启动一个UID名的TIMER (10分种后发答题超时 ,同时从Container 中取出UID ) . 如果用户在10 分种内回答题目, 从Container 取出UID , 业务处理.该UID名的TIMER cancel如果用户在10 分种后回答题目, Container 中已经没有该UID , 业务处理"发答题超时".....此方法绝对不可用, 我又想到了一个新的方案,提出来问一下大像可行不:短信上行,就像一个request请求,不同的是每次上行Session 都不一样。。所以,我在下行题目时:我用: HttpSession session = request.getSession(); session.setMaxInactiveInterval(10*60); session.setAttribute("problemID","下行题目ID号");再做一个Listener: public class ExamSessionListener implements HttpSessionListener { public void sessionCreated(HttpSessionEvent se) { // TODO Auto-generated method stub } public void sessionDestroyed(HttpSessionEvent se) { // TODO Auto-generated method stub System.out.println("销毁SessionID:" + se.getSession().getId()); String proID = se.getSession().getAttribute("problemID"); //连接数据库,判断是否已回答该题 ..... //如果没有回答 MessageDAO.sendMsg("回答超时"); }} 问一个servlet底层问题。 配置structs的时候报错 不知道是不是Myeclipse的问题 myeclipse6.0 如何安装 jbpm插件 mysql日期查询 大家帮看看这个错误,TOMCAT启动时报的,框架是SSH jstl的问题 项目外包:现场开发30天 JAVA,Hibernate+Spring+JasperReport 双倍于薪资的报酬 thinking in java中的一个列子有问题请过来帮忙看看 识别不同客户端的方法?需要高手解答。 新手问题 几个关于Hibernate映射对象标示符的问题,哪位给解一下惑? web.xml resource-ref问题
的方法,可以试一下,哈,
的方法好像不行哦,如果用户答了题,但我不知道他是哪个线程,我没办法停止它了!!
向用户发出一个问题,分配一个UID ,放入Container . 同时启动一个UID名的TIMER (10分种后发答题超时 ,同时从Container 中取出UID ) .
如果用户在10 分种内回答题目, 从Container 取出UID , 业务处理.该UID名的TIMER cancel
如果用户在10 分种后回答题目, Container 中已经没有该UID , 业务处理"发答题超时".....
类似做个时间线程 当你发送题目之后,就启动这个线程,如果接收到客户的答题结果就停止线程,如果没有而且超过10分钟时,可以在线程里触发消息。你看行么?===============================================比起上面这个方法,我更赞同还有一个方法是,每发出一个用户短信,就往数据库里面加条记录,记录里面有发出的时间,然后每分钟check一下DB,看看有没有超时的用户,就给他发短信周期可以缩短无论你是什么服务器 线程达到一定数量结果是什么应该不用说了吧 采用上面的方法,除非在你确认用户量很小,==========================构造一个Container
向用户发出一个问题,分配一个UID ,放入Container . 同时启动一个UID名的TIMER (10分种后发答题超时 ,同时从Container 中取出UID ) .
如果用户在10 分种内回答题目, 从Container 取出UID , 业务处理.该UID名的TIMER cancel
如果用户在10 分种后回答题目, Container 中已经没有该UID , 业务处理"发答题超时".....此方法绝对不可用,
短信上行,就像一个request请求,不同的是每次上行Session 都不一样。。
所以,我在下行题目时:
我用:
HttpSession session = request.getSession();
session.setMaxInactiveInterval(10*60);
session.setAttribute("problemID","下行题目ID号");
再做一个Listener:
public class ExamSessionListener implements HttpSessionListener { public void sessionCreated(HttpSessionEvent se) {
// TODO Auto-generated method stub } public void sessionDestroyed(HttpSessionEvent se) {
// TODO Auto-generated method stub
System.out.println("销毁SessionID:" + se.getSession().getId());
String proID = se.getSession().getAttribute("problemID");
//连接数据库,判断是否已回答该题
.....
//如果没有回答
MessageDAO.sendMsg("回答超时"); }}