bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

JSP頁(yè)面線程的示例分析

這篇文章將為大家詳細(xì)講解有關(guān)JSP頁(yè)面線程的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

為東河等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及東河網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、東河網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

一、模擬任務(wù)

首先我們?cè)O(shè)計(jì)一個(gè)TaskBean類,它實(shí)現(xiàn)java.lang.Runnable接口,其run()方法在一個(gè)由JSP頁(yè)面(start.jsp)啟動(dòng)的獨(dú)立線程中運(yùn)行。終止run()方法執(zhí)行由另一個(gè)JSP頁(yè)面stop.jsp負(fù)責(zé)。TaskBean類還實(shí)現(xiàn)了java.io.Serializable接口,這樣JSP頁(yè)面就可以將它作為JavaBean調(diào)用

二、啟動(dòng)任務(wù)

start.jsp啟動(dòng)一個(gè)專用的線程來運(yùn)行“繁重的任務(wù)”,然后把HTTP請(qǐng)求傳遞給status.jsp。

start.jsp頁(yè)面利用標(biāo)記創(chuàng)建一個(gè)TaskBean的實(shí)例,將scope屬性定義為session使得對(duì)于來自同一瀏覽器的HTTP請(qǐng)求,其他頁(yè)面也能提取到同一個(gè)Bean對(duì)象。start.jsp通過調(diào)用session.removeAttribute("task")確保創(chuàng)建了一個(gè)新的Bean對(duì)象,而不是提取一個(gè)舊對(duì)象(例如,同一個(gè)用戶會(huì)話中更早的JSP頁(yè)面所創(chuàng)建的Bean對(duì)象)

start.jsp創(chuàng)建并設(shè)置好TaskBean對(duì)象之后,接著創(chuàng)建一個(gè)Thread,并將Bean對(duì)象作為一個(gè)Runnable實(shí)例傳入。調(diào)用start()方法時(shí)新創(chuàng)建的線程將執(zhí)行TaskBean對(duì)象的run()方法。

現(xiàn)在有兩個(gè)線程在并發(fā)執(zhí)行:執(zhí)行JSP頁(yè)面的線程(稱之為“JSP線程”),由JSP頁(yè)面創(chuàng)建的線程(稱之為“任務(wù)線程”)。接下來,start.jsp利用調(diào)用status.jsp,status.jsp顯示出進(jìn)度條以及任務(wù)的執(zhí)行情況。注意status.jsp和start.jsp在同一個(gè)JSP線程中運(yùn)行。

start.jsp在創(chuàng)建線程之前就把TaskBean的running標(biāo)記設(shè)置成了true,這樣,即使當(dāng)JSP線程已開始執(zhí)行status.jsp而任務(wù)線程的run()方法尚未啟動(dòng),也能夠確保用戶會(huì)得到“任務(wù)已開始運(yùn)行”的狀態(tài)報(bào)告。

將running標(biāo)記設(shè)置成true、啟動(dòng)任務(wù)線程這兩行代碼可以移入TaskBean構(gòu)成一個(gè)新的方法,然后由JSP頁(yè)面調(diào)用這個(gè)新方法。一般而言,JSP頁(yè)面應(yīng)當(dāng)盡量少用Java代碼,即我們應(yīng)當(dāng)盡可能地把Java代碼放入Java類。不過本例中我們不遵從這一規(guī)則,把new Thread(task).start()直接放入start.jsp突出表明JSP線程創(chuàng)建并啟動(dòng)了任務(wù)線程。

在JSP頁(yè)面中操作多線程必須謹(jǐn)慎,注意JSP線程和其它線程實(shí)際上是并發(fā)執(zhí)行的,就象在桌面應(yīng)用程序中,我們用一個(gè)線程來處理GUI事件,另外再用一個(gè)或多個(gè)線程來處理后臺(tái)任務(wù)。

不過在JSP環(huán)境中,考慮到多個(gè)用戶同時(shí)請(qǐng)求某一個(gè)頁(yè)面的情況,同一個(gè)JSP頁(yè)面可能會(huì)在多個(gè)線程中同時(shí)運(yùn)行;另外,有時(shí)同一個(gè)用戶可能會(huì)向同一個(gè)頁(yè)面發(fā)出多個(gè)請(qǐng)求,雖然這些請(qǐng)求來自同一個(gè)用戶,它們也會(huì)導(dǎo)致服務(wù)器同時(shí)運(yùn)行一個(gè)JSP頁(yè)面的多個(gè)線程。

三、任務(wù)進(jìn)度

status.jsp頁(yè)面利用一個(gè)HTML進(jìn)度條向用戶顯示任務(wù)的執(zhí)行情況。首先,status.jsp利用標(biāo)記獲得start.jsp頁(yè)面創(chuàng)建的Bean對(duì)象

為了及時(shí)反映任務(wù)執(zhí)行進(jìn)度,status.jsp會(huì)自動(dòng)刷新。JavaScript代碼setTimeout("location=′status.jsp′", 1000)將每隔1000毫秒刷新頁(yè)面,重新請(qǐng)求status.jsp,不需要用戶干預(yù)。

關(guān)于“JSP頁(yè)面線程的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

當(dāng)前名稱:JSP頁(yè)面線程的示例分析
網(wǎng)站URL:http://vcdvsql.cn/article12/peghdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)定制網(wǎng)站App開發(fā)網(wǎng)站改版網(wǎng)站建設(shè)搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)