java 计时器timer的使用
2012-04-05 18:39
459 查看
前段时间在做一个考试系统时候,遇到一个问题,发起一系列的考试后,要满足一个需求,就是能够设定时间来批量开始和结束一些列的考试,这里就想到使用timer了,
前台的代码就省略不写了,这里只讨论timer的使用
以下的方法autoOperatorExam(String idStr, String time, String type);三个参数分别是批量处理的id,设定的时间,类型(即是开始操作还是结束操作);
这里面看实例化了autoUpdateStatusStart();和autoUpdateStatusEnd();通过实例化可以将参数传递给内部方法run();
这样程序就能在后台进行时间的控制执行所要的操作
前台的代码就省略不写了,这里只讨论timer的使用
以下的方法autoOperatorExam(String idStr, String time, String type);三个参数分别是批量处理的id,设定的时间,类型(即是开始操作还是结束操作);
//自动开始结束考试 public void autoOperatorExam(String idStr, String time, String type){ String[] ids = idStr.split("-"); for(String id: ids){ examDAO.updateExamTime(Integer.valueOf(id), time, type); /* * 此处采用计时器来代替线程的等待 * 如果使用线程,必须要将线程的任务全执行完后才能向下执行,而计时器实现了后台 * 执行的功能 * */ Timer timer = new Timer(); //计算时间的间隔 String timeStr = null; try { timeStr = FormatDate.examRemainTime(FormatDate.getFormateDateAll(), time); } catch (ParseException e) { System.out.println("计算时间差出错!!"); e.printStackTrace(); } //System.out.println(timeStr); String[] timeString = timeStr.split("#"); Integer timeSpace = (Integer.valueOf(timeString[0])*60)+Integer.valueOf(timeString[1]); System.out.println("时间的间隔是=" +timeSpace); if("开始时间".equals(type)){ //这里通过构造方法将参数传递给run()方法 timer.schedule(new autoUpdateStatusStart(Integer.valueOf(id)), (Integer.valueOf(timeSpace)*1000)); }else if("结束时间".equals(type)){ timer.schedule(new autoUpdateStatusEnd(Integer.valueOf(id)), (Integer.valueOf(timeSpace)*1000)); } } }
这里面看实例化了autoUpdateStatusStart();和autoUpdateStatusEnd();通过实例化可以将参数传递给内部方法run();
//计时器的具体任务操作,开始考试 public class autoUpdateStatusStart extends TimerTask{ private int taskID = 0; //任务id public autoUpdateStatusStart(int ID){ this.taskID = ID; } public void run() { System.out.println("开始考试的考生id= " + taskID); Exam exam = examDAO.getExamById(taskID); exam.setExamStatus("开始"); exam.setExamStartime("已生效!!"); examDAO.update(exam); System.out.println("开始已成功执行!!!"); } } //结束考试的run操作 public class autoUpdateStatusEnd extends TimerTask{ private int taskID = 0; //任务id public autoUpdateStatusEnd(int ID){ this.taskID = ID; } public void run() { System.out.println("结束考试的考生id= "+taskID); Exam exam = examDAO.getExamById(taskID); exam.setExamStatus("结束"); exam.setExamEndtime("已生效!!"); examDAO.update(exam); System.out.println("结束已成功执行!!!"); } }
这样程序就能在后台进行时间的控制执行所要的操作
相关文章推荐
- 在Java中怎么使用定时服务计时器Timer 处理隔断执行问题
- Java计时器Timer 使用1 (转)
- Java计时器Timer 使用 完整案例(转)
- java计时器Timer的几种使用方法
- Java计时器Timer 使用
- Java计时器Timer的使用!...
- Java计时器Timer的使用!...
- [转]Java计时器Timer 使用
- [Unity3D]Lua中使用协程coroutine和计时器timer
- 使用Java中的Timer和TimerTask
- 在 ASP.NET 中使用计时器(Timer)(2003/10/23 20:06)
- java定时器timer的使用方法代码示例
- java中使用线程实现Timer(定时器)原理和源码
- 关于Java script 定时器(timer)的一些使用
- 使用Java中的Timer和TimerTask
- 定时任务:Java中Timer和TimerTask的使用
- 在VS2005 中使用的计时器(Timer)的困惑.
- 定时任务:Java中Timer和TimerTask的使用
- java中的Timer用法(二) 使用举例
- java定时器的使用(Timer)