亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

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

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

        1.java的多線程機制

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

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

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

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

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

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

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

        privatestaticExecutorServiceimageService=Executors.newFixedThreadPool(3);

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

        List>callableList=new ArrayList>();

        for(UploadFile file:files){

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

        }

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

        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();

        }

        另外,由于每個任務(wù)的執(zhí)行都需要返回結(jié)果,故而需要一個實現(xiàn)了Callable接口的線程類來組成這個任務(wù)隊列[2],而在此,通過UploadRequestSender這個類來發(fā)送單張圖片上傳請求,并把操作結(jié)果返回。具體實現(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é)點值。

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

        參考文獻(xiàn)

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

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

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

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

        国产一区二区自拍刺激在线观看| 思思久久96热在精品不卡| 素人系列免费在线观看| 国产成人av三级在线观看韩国| 一本大道av伊人久久综合| 毛片24种姿势无遮无拦| 麻豆国产乱人伦精品一区二区| 伊人久久综合狼伊人久久| 91精品91久久久久久| 亚洲中字永久一区二区三区| 亚洲精品国产精品乱码在线观看| 日躁夜躁狠狠躁2001| 日韩五十路| 极品少妇一区二区三区| 亚洲线精品一区二区三区| 国产国语熟妇视频在线观看| 久久这里都是精品一区| 国产91精品自拍视频| 亚州国产av一区二区三区伊在| 亚洲中文有码字幕青青| 久久国产精品岛国搬运工| 国产的自拍av免费的在线观看| 强奷乱码中文字幕| 麻豆91免费视频| 国产精品污一区二区三区在线观看| 亚洲一区二区三区,日本| 精品久久欧美熟妇www| 无码国产精品第100页| 暴露的熟女好爽好爽好爽| 极品少妇hdxx麻豆hdxx| 国产午夜影视大全免费观看| 偷拍自拍一区二区三区| 日本激情网站中文字幕| 国产成年无码v片在线| 日韩美女高潮流白浆视频在线观看| 国产蜜桃传媒在线观看| 久久只精品99品免费久23| 久久aⅴ无码一区二区三区| 亚洲国产av中文字幕| 天天做天天爱夜夜爽女人爽| 国产精品无码日韩欧|