明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

JSP編程進度條設計案例(2)

[摘要]如果任務已經啟動,isStarted()方法將返回true: public synchronized boolean isStarted() { return started;}   如果任務已經完成,isCompleted()方法將返回true: public synchronized b...

  如果任務已經啟動,isStarted()方法將返回true:


public synchronized boolean isStarted() {
    return started;
}
 


  如果任務已經完成,isCompleted()方法將返回true:


public synchronized boolean isCompleted() {
    return counter == 100;
}
 


  如果任務正在運行,isRunning()方法將返回true:


public synchronized boolean isRunning() {
    return running;
}



  SetRunning()方法由start.jsp或stop.jsp調用,當running參數是true時。SetRunning()方法還要將任務標記為“已經啟動”。調用setRunning(false)表示要求run()方法停止執(zhí)行。


public synchronized void setRunning(boolean running) {
    this.running = running;
    if (running)
        started  = true;
}
 
  任務執(zhí)行完畢后,調用getResult()方法返回計算結果;如果任務尚未執(zhí)行完畢,它返回null:


public synchronized Object getResult() {
    if (isCompleted())
        return new Integer(sum);
    else
        return null;
}
 
  當running標記為true、completed標記為false時,run()方法調用work()。在實際應用中,run()方法也許要執(zhí)行復雜的SQL查詢、解析大型XML文檔,或者調用消耗大量CPU時間的EJB方法。注意“繁重的任務”可能要在遠程服務器上執(zhí)行。報告結果的JSP頁面有兩種選擇:或者等待任務結束,或者使用一個進度條。


public void run() {
    try {
        setRunning(true);
        while (isRunning() && !isCompleted())
            work();
    } finally {
        setRunning(false);
    }
}