JSP編程進(jìn)度條設(shè)計(jì)案例(2)
發(fā)表時(shí)間:2024-02-03 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]如果任務(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);
}
}