java多線程技術(shù)關(guān)于在線圖片上傳探究

java多線程技術(shù)關(guān)于在線圖片上傳探究

ID:31675993

大?。?5.67 KB

頁數(shù):7頁

時間:2019-01-17

java多線程技術(shù)關(guān)于在線圖片上傳探究_第1頁
java多線程技術(shù)關(guān)于在線圖片上傳探究_第2頁
java多線程技術(shù)關(guān)于在線圖片上傳探究_第3頁
java多線程技術(shù)關(guān)于在線圖片上傳探究_第4頁
java多線程技術(shù)關(guān)于在線圖片上傳探究_第5頁
資源描述:

《java多線程技術(shù)關(guān)于在線圖片上傳探究》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、Java多線程技術(shù)關(guān)于在線圖片上傳探究【摘要】多線程技術(shù)能夠使應(yīng)用程序并行執(zhí)行,提高CPU利用率,容易實(shí)現(xiàn)網(wǎng)絡(luò)上的實(shí)時交互行為。本文分析了java的多線程機(jī)制,介紹了在網(wǎng)絡(luò)上傳文件中運(yùn)用java多線程機(jī)制實(shí)現(xiàn)對圖片上傳的加速?!娟P(guān)鍵詞】java多線程;Servlet;圖片上傳1.java的多線程機(jī)制首先多線程是相對于單線程而言的,指的是在一個程序中可以定義多個線程并同時運(yùn)行它們,每個線程可以執(zhí)行不同的任務(wù)。與進(jìn)程不同的是,同類多線程共享一塊內(nèi)存空間和一組系統(tǒng)資源,所以,系統(tǒng)創(chuàng)建多線程花費(fèi)單價較小。因此,也稱

2、線程為輕負(fù)荷進(jìn)程。很多計算機(jī)編程語言需要外部軟件包來實(shí)現(xiàn)多線程,而java語言則內(nèi)在支持多線程,所有的類都是在多線程思想下定義的,使用java的多線程機(jī)制編程可將程序的任務(wù)分解為幾個并行的子任務(wù),通過縣城的并發(fā)執(zhí)行來加速程序運(yùn)行,提高CPU的利用率[1]。例如:在網(wǎng)絡(luò)編程中,有很多功能可以并發(fā)執(zhí)行。網(wǎng)絡(luò)傳輸速度一般較慢,用戶輸入速度也較慢,因此可以設(shè)計兩個獨(dú)立線程分別完成這兩個任務(wù)而不影響正常的顯示或其他功能。2.多線程的圖片上傳技術(shù)由于用戶上傳圖片時是把批量的圖片數(shù)據(jù)傳到主服務(wù),然后由主服務(wù)器連接文件上傳

3、服務(wù)器的Servlet,把圖片數(shù)據(jù)傳遞給該Servlet,由它調(diào)用圖片壓縮方法,壓縮、寫入圖片。由于壓縮和I/O操作都是比較占用時間的操作,如果采用串行的方式必然影響系統(tǒng)的響應(yīng)速度,而采用多線程技術(shù),使所有圖片的壓縮和I/O并發(fā)進(jìn)行就可以大大提升系統(tǒng)的響應(yīng)時間。考慮到Servlet是以多線程方式運(yùn)行的,故而只需要在主服務(wù)端也以多線性方式把單張圖片的請求發(fā)送給文件服務(wù)器的Servlet即可,然后等待所有線程執(zhí)行完,把執(zhí)行結(jié)果回調(diào),即可通過判斷對調(diào)的結(jié)果就可以判斷每張圖片的上傳操作是否成功,以此為標(biāo)準(zhǔn)決定往數(shù)據(jù)

4、庫寫入哪些數(shù)據(jù)。具體的實(shí)現(xiàn)方式如下:首先,創(chuàng)建創(chuàng)建線程池,池中的線程數(shù)一般由系統(tǒng)核心數(shù)決定。privatestaticExecutorServiceimageService=Executors.newFixedThreadPoo1(3);然后,創(chuàng)建一個任務(wù)隊列,其中每張圖片的一次上傳都是隊列中的一個任務(wù)。List>callableList=newArrayList>();for(UploadFilefile:files){callableList.add(newUploadRequestSender(url

5、,file));}最后,等待所有上傳結(jié)果(返回碼)出來后,根據(jù)圖結(jié)果決定數(shù)據(jù)庫的操作。try{List>futures=imageServiceinvokeAll(callableList);for(inti二0;i{privateURLservletUrl;privateUploadFilefile;publicUploadRequestSender(URLservletUrl,UploadFilefile){this.servletUrl=servletUrl;this.f訂e二f訂e;}private

6、intsendlmageToServlet()throwsIOException{HttpURLConnectionconnection二(HttpURLConnection)servletUrl.openConnection();connection.setDoOutput(true);connection.setDolnput(true);connection.setRequestProperty(”Content-Type”,”application/octet-stream^);connection

7、.setRequestMethod(”POST");connection.setRequestProperty(”shortPath”,file.getShortPath());OutputStreamos二connection.getOutputStream();os.write(file.getFileData());System?out?printin(connection.getContentType()+”:”+connection.getResponseCode());os.close();re

8、turnconnection.getResponseCode();}publicIntegercall()throwsException{returnsendlmageToServlet();}}1.總結(jié)其中,call()方法即線程所要執(zhí)行的操作,而返回值即操作執(zhí)行的結(jié)果,也即前面futures中與該應(yīng)任務(wù)相應(yīng)的節(jié)點(diǎn)值。而在上傳服務(wù)器端,由于Servlet對于每個請求都會通過一個線程來響應(yīng)該請求,故而也會以多線程

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。