明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

JSP編程進(jìn)度條設(shè)計(jì)案例(2)

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

  如果任務(wù)已經(jīng)啟動(dòng),isStarted()方法將返回true:


public synchronized boolean isStarted() {
    return started;
}
 


  如果任務(wù)已經(jīng)完成,isCompleted()方法將返回true:


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


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


public synchronized boolean isRunning() {
    return running;
}



  SetRunning()方法由start.jsp或stop.jsp調(diào)用,當(dāng)running參數(shù)是true時(shí)。SetRunning()方法還要將任務(wù)標(biāo)記為“已經(jīng)啟動(dòng)”。調(diào)用setRunning(false)表示要求run()方法停止執(zhí)行。


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


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


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