999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2013-12-31 00:00:00劉丹
電子世界 2013年20期

【摘要】多線程技術(shù)能夠使應(yīng)用程序并行執(zhí)行,提高CPU利用率,容易實(shí)現(xiàn)網(wǎng)絡(luò)上的實(shí)時(shí)交互行為。本文分析了java的多線程機(jī)制,介紹了在網(wǎng)絡(luò)上傳文件中運(yùn)用java多線程機(jī)制實(shí)現(xiàn)對(duì)圖片上傳的加速。

【關(guān)鍵詞】java多線程;Servlet;圖片上傳

1.java的多線程機(jī)制

首先多線程是相對(duì)于單線程而言的,指的是在一個(gè)程序中可以定義多個(gè)線程并同時(shí)運(yùn)行它們,每個(gè)線程可以執(zhí)行不同的任務(wù)。與進(jìn)程不同的是,同類多線程共享一塊內(nèi)存空間和一組系統(tǒng)資源,所以,系統(tǒng)創(chuàng)建多線程花費(fèi)單價(jià)較小。因此,也稱線程為輕負(fù)荷進(jìn)程。

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

2.多線程的圖片上傳技術(shù)

由于用戶上傳圖片時(shí)是把批量的圖片數(shù)據(jù)傳到主服務(wù),然后由主服務(wù)器連接文件上傳服務(wù)器的Servlet,把圖片數(shù)據(jù)傳遞給該Servlet,由它調(diào)用圖片壓縮方法,壓縮、寫入圖片。由于壓縮和I/O操作都是比較占用時(shí)間的操作,如果采用串行的方式必然影響系統(tǒng)的響應(yīng)速度,而采用多線程技術(shù),使所有圖片的壓縮和I/O并發(fā)進(jìn)行就可以大大提升系統(tǒng)的響應(yīng)時(shí)間。

考慮到Servlet是以多線程方式運(yùn)行的,故而只需要在主服務(wù)端也以多線性方式把單張圖片的請(qǐng)求發(fā)送給文件服務(wù)器的Servlet即可,然后等待所有線程執(zhí)行完,把執(zhí)行結(jié)果回調(diào),即可通過判斷對(duì)調(diào)的結(jié)果就可以判斷每張圖片的上傳操作是否成功,以此為標(biāo)準(zhǔn)決定往數(shù)據(jù)庫(kù)寫入哪些數(shù)據(jù)。

具體的實(shí)現(xiàn)方式如下:

首先,創(chuàng)建創(chuàng)建線程池,池中的線程數(shù)一般由系統(tǒng)核心數(shù)決定。

privatestaticExecutorServiceimageService=Executors.newFixedThreadPool(3);

然后,創(chuàng)建一個(gè)任務(wù)隊(duì)列,其中每張圖片的一次上傳都是隊(duì)列中的一個(gè)任務(wù)。

List>callableList=new ArrayList>();

for(UploadFile file:files){

callableList.add(new UploadRequest Sender(url,file));

}

最后,等待所有上傳結(jié)果(返回碼)出來后,根據(jù)圖結(jié)果決定數(shù)據(jù)庫(kù)的操作。

try{

List>futures=imageService

invokeAll(callableList);

for(int i=0;i

if(futures.get(i).get()==200){

photos.add(addPhoto(album,uploadDomain+photoBasePath

+files.get(i).getShortPath()));

}

}

}catch(InterruptedException e){

e.printStackTrace();

}catch(ExecutionException e){

e.printStackTrace();

}

另外,由于每個(gè)任務(wù)的執(zhí)行都需要返回結(jié)果,故而需要一個(gè)實(shí)現(xiàn)了Callable接口的線程類來組成這個(gè)任務(wù)隊(duì)列[2],而在此,通過UploadRequestSender這個(gè)類來發(fā)送單張圖片上傳請(qǐng)求,并把操作結(jié)果返回。具體實(shí)現(xiàn)如下:

public class UploadRequestSender implements Callable{

private URL servletUrl;

private UploadFile file;

public UploadRequestSender(URL servletUrl,UploadFile file){

this.servletUrl=servletUrl;

this.file=file;

}

private int sendImageToServlet()throws IOException{

HttpURLConnection connection=

(HttpURLConnection)servletUrl.openConnection();

connection.setDoOutput(true);

connection.setDoInput(true);

//發(fā)送格式為二進(jìn)制流

connection.setRequestProperty (\"Content-Type\",\"application/octet-stream\");

connection.setRequestMethod(\"POST\");

connection.setRequestProperty(\"shortPath\",file.getShortPath());

OutputStream os=connection.getOutput Stream();

os.write(file.getFileData());

System.out.println(connection.get ContentType()+\":\"

+connection.getResponseCode());

os.close();

return connection.getResponseCode();

}

public Integer call()throws Exception{

return sendImageToServlet();

}

}

3.總結(jié)

其中,call()方法即線程所要執(zhí)行的操作,而返回值即操作執(zhí)行的結(jié)果,也即前面futures中與該應(yīng)任務(wù)相應(yīng)的節(jié)點(diǎn)值。

而在上傳服務(wù)器端,由于Servlet對(duì)于每個(gè)請(qǐng)求都會(huì)通過一個(gè)線程來響應(yīng)該請(qǐng)求,故而也會(huì)以多線程的方式來壓縮和進(jìn)行圖片的I/O,因此便通過多線程技術(shù)實(shí)現(xiàn)了對(duì)圖片上傳的加速。

參考文獻(xiàn)

[1]邵麗萍.JAVA語言程序設(shè)計(jì)[M].清華大學(xué)出版社, 2008:8.

[2][美]Brian Goetz,Tim Peierls,Joshua Bloch,Joseph Bowbeer,David Holmes,Goug Lee,韓鍇,方妙.Java并發(fā)編程實(shí)踐(Java Concurrency In Practice)[M].北京:電子工業(yè)出版社,2007.

[3]萬志堅(jiān).用于圖像處理的Java Applet研究[J].湖北工業(yè)大學(xué)學(xué)報(bào),2006,6(21)3.

作者簡(jiǎn)介:劉丹(1978—),女,吉林長(zhǎng)春人,大連廣播電視大學(xué)講師,研究方向:軟件技術(shù)與理論。

主站蜘蛛池模板: 一级全黄毛片| 亚洲国产日韩一区| 免费久久一级欧美特大黄| 日本不卡在线播放| 国内丰满少妇猛烈精品播| 久久亚洲国产一区二区| 亚洲国内精品自在自线官| 视频二区亚洲精品| 91娇喘视频| 亚洲中文字幕av无码区| 精品黑人一区二区三区| 久久永久精品免费视频| 97国产在线观看| 国产免费精彩视频| 成人a免费α片在线视频网站| 99这里只有精品在线| 欧美专区日韩专区| 国产av无码日韩av无码网站| 婷婷六月综合网| Aⅴ无码专区在线观看| 这里只有精品在线| 福利在线不卡一区| 伦伦影院精品一区| 无码国内精品人妻少妇蜜桃视频| 日韩在线欧美在线| 欧美成人免费| 中文字幕人妻av一区二区| 91网址在线播放| 国产成人综合亚洲网址| 成人午夜久久| 夜夜高潮夜夜爽国产伦精品| 999精品在线视频| 国产精品嫩草影院视频| 免费在线观看av| 亚洲熟女偷拍| 东京热av无码电影一区二区| 日韩在线中文| 黄色不卡视频| 99ri精品视频在线观看播放| 国产成人综合在线视频| 国产无码在线调教| 性视频一区| 国产99免费视频| 欧美在线导航| 午夜精品影院| 日本免费福利视频| 亚洲—日韩aV在线| 欧美精品亚洲日韩a| 色综合中文综合网| 国产微拍精品| 久久99国产精品成人欧美| 91香蕉国产亚洲一二三区| 亚洲欧美天堂网| 中文字幕天无码久久精品视频免费 | 丁香六月综合网| 国产超碰在线观看| 亚洲三级a| 91网在线| 国产一级毛片网站| 国产精品成人啪精品视频| 国产成在线观看免费视频| 久久99国产乱子伦精品免| 亚洲综合经典在线一区二区| 久久无码av一区二区三区| 亚洲人成亚洲精品| 天天摸夜夜操| 国产精品嫩草影院视频| 美女扒开下面流白浆在线试听| 国产在线观看91精品| 精品无码国产一区二区三区AV| 中文字幕啪啪| 国产熟女一级毛片| 欧美a在线视频| 一级毛片在线播放免费| 啪啪免费视频一区二区| 国产欧美日韩综合在线第一| 免费啪啪网址| 日本不卡在线播放| 色妞www精品视频一级下载| 91免费精品国偷自产在线在线| 精品国产免费观看| 在线精品自拍|