java 計時器timer的使用

來源:互聯網
上載者:User

前段時間在做一個考試系統時候,遇到一個問題,發起一系列的考試後,要滿足一個需求,就是能夠設定時間來批量開始和結束一些列的考試,這裡就想到使用timer了,

前台的代碼就省略不寫了,這裡只討論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("結束已成功執行!!!");
}
}

這樣程式就能在後台進行時間的控制執行所要的操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.