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

        ?

        計算機Java多線程下載技術(shù)分析

        2018-03-04 07:03:20張春黎
        電腦知識與技術(shù) 2018年36期

        張春黎

        摘要:作為應(yīng)用率較高的下載方案,多線程下載技術(shù)將多線程優(yōu)點充分發(fā)揮了出來,利用多線程基于相同時間下的下載請求,分割處理下載數(shù)據(jù),各線程對應(yīng)相應(yīng)的下載內(nèi)容,最后共同組成數(shù)據(jù)文件,由此可使下載效率得到顯著的提升。多線程下載技術(shù)在多個下載器中有著廣泛的運用,包括QQ旋風(fēng)、迅雷等。該研究針對計算機Java多線程下載技術(shù)進行了分析,并開展實例分析,借助Runnable接口,對烏龜和兔子賽跑的過程、結(jié)局開展模擬研究。

        關(guān)鍵詞:Java;線程;多線程技術(shù);線程同步

        中圖分類號:TP393? ? ? 文獻標識碼:A? ? ? 文章編號:1009-3044(2018)36-0016-02

        當(dāng)前計算機網(wǎng)絡(luò)成為人們獲取資源的重要途徑,在取得資源的過程中,運用的關(guān)鍵方式就是下載??梢詫⑾螺d通道看作是線程,而多線程對應(yīng)的是將多數(shù)下載通道都打開。服務(wù)器擁有下載的功能,用戶在共享寬帶環(huán)境下,基于優(yōu)先級狀況,能夠平均化地對下載線程進行分配處理。下載速度會隨著線程的增多而提高,二者呈正相關(guān)的關(guān)系。多線程下載技術(shù)在當(dāng)下眾多下載軟件中都可以運行。

        1 網(wǎng)絡(luò)下載技術(shù)及基本構(gòu)架

        當(dāng)前在網(wǎng)絡(luò)覆蓋面積逐步擴大的過程中,使用者的數(shù)量明顯增多,大量使用者的訪問操作都需要由Wed服務(wù)器做出響應(yīng),所以導(dǎo)致網(wǎng)絡(luò)下載技術(shù)的發(fā)展收到了來自Wed服務(wù)器性能的限制。對此,PZP 技術(shù)憑借非中心化、負載相對均衡化及資源分散化的特征能夠于共享文件方面得到廣泛運用,可以基于客戶機結(jié)點對共享文件進行保存,在缺少中央服務(wù)器的情況下,使用者間能夠?qū)ξ募M行傳送、共享。借助帶寬(參與節(jié)點),PZP技術(shù)憑借合作下載及多數(shù)結(jié)點彼此傳輸數(shù)據(jù)的途徑,能夠使容量較大的文件傳輸率得到顯著改善,其中就涵蓋e Mule、e Donke及Bit T0rrent等[1]。

        P2P、C/S是網(wǎng)絡(luò)下載主要框架類型,HTTP下的TP下載建立在C/S架構(gòu)的基礎(chǔ)上,多線程下載途徑形成于客戶端;但是多源文件傳輸途徑以P2P網(wǎng)絡(luò)結(jié)構(gòu)為基礎(chǔ),形成了e Mule和BT。C/S框架涵蓋了HTTP/FTP下載途徑,該模式下的服務(wù)器存儲了大量的共享文件,使用者在需要時需要機遇服務(wù)器對文件開展搜索、下載及共享等操作,因此可以將服務(wù)器看作是數(shù)據(jù)信息的中轉(zhuǎn)站,客戶端所開展的下載、上傳等操作都需要經(jīng)過這一環(huán)節(jié)。P2P是BT協(xié)議的基礎(chǔ)結(jié)構(gòu),借助相應(yīng)節(jié)點資源,Peerto Pee能夠?qū)ψ越M織網(wǎng)絡(luò)進行構(gòu)建,因為網(wǎng)絡(luò)結(jié)點彼此存在對等的關(guān)系,因此具備服務(wù)、被服務(wù)兩大功能,無須途徑服務(wù)器,就能夠?qū)ξ募M行傳送。

        2 可行性分析

        2.1 技術(shù)可行性

        計算機Java語言的關(guān)鍵特點即為多線程技術(shù),借助對多線程程序進行編寫的方式,能夠允許計算機于同時對各項任務(wù)進行高效化的處理。利用特定語言能夠編寫出靜態(tài)代碼—程序,其本質(zhì)上是計算機指令的組合結(jié)果。動態(tài)化的執(zhí)行程序也叫作進程,涵蓋加載代碼、執(zhí)行代碼和結(jié)束三個環(huán)節(jié),進程也經(jīng)歷了形成-發(fā)展-滅亡。進程的下一級執(zhí)行單位即為線程,其作為進程下的獨立順序控制流。各Java程序均包括主線程(缺省),作為Java應(yīng)用程序,main()方法執(zhí)行的主要線索就是主線程;而作為Applet程序,控制瀏覽器對JavaApplet程序進行執(zhí)行、記載操作的關(guān)鍵線索就是主線程。多線程在實現(xiàn)的過程中,需要基于主線程對線程對象進行構(gòu)建。死亡、新建、運行、就緒及堵塞是所有線程所具有的狀態(tài)形式。

        對于下載程序功能模塊,借助計算機Java 高級編程語言能夠發(fā)揮其功能,該編程語言有著多方面的優(yōu)勢,已經(jīng)被作為關(guān)鍵開發(fā)工具,有著廣泛的應(yīng)用。Java語言的顯著特征即為多線程編程技術(shù)[2]。就多線程編程的概念來看,其能夠針對程序任務(wù)進行劃分,形成多項并行子任務(wù)。進行網(wǎng)絡(luò)編程時,能夠并發(fā)開展多項功能。

        計算機Java下的多線程類的具體實現(xiàn)途徑如下:

        1) 對java.lang.Thread的類進行拓展,并對Thread類下run方式進行覆蓋;

        2) 對java.lang.Runnable接口的類的實現(xiàn)進行生成,使java.lang.Thread和Runnable二者的實例彼此關(guān)聯(lián)。對于類的線程支持,關(guān)鍵由Thread 類來供應(yīng),類在獲取線程功能的過程中,應(yīng)基于計算機Java下,使Thread 類對子類進行派生。在對包括printThread.java的Thread 類進行擴展時,因為相同進程下很多線程對存儲空間進行了共享,這樣雖然具有一定的便利性,但是也由此產(chǎn)生了訪問沖突的弊端[3]。而針對這類問題,計算機Java語言所具有的機制能夠有效對訪問沖突問題進行處理,不會出現(xiàn)多個線程在相同的時間都訪問相同數(shù)據(jù)的狀況。若想確保僅借助特定途徑才能對數(shù)據(jù)對象進行訪問,就需要發(fā)揮private關(guān)鍵詞的作用,這就要研制出該途徑相對應(yīng)的機制,其在synchronized關(guān)鍵詞方面,涵蓋了synchronized塊、synchronized方式。本研究在研發(fā)過程中運用的是 Eclipse下SWT圖形界面技術(shù),同時也涉及了HttpClient包。

        3 java下的多線程

        3.1 創(chuàng)建、啟動線程

        第一種為在Runnable接口實現(xiàn)過程中,對線程類進行定義:

        Runnable 接口類型為Thread myThread = new Thread(target)//target

        Runnable下的途徑僅為:

        public void run();能夠?qū)€程運行體進行定義

        第二種是對Thread子類進行定義,也對run方式進行重寫:

        clasMyThread extends Thread{public void run(){}}

        線程類在對新線程進行啟動的過程中,需要對Thread下start()方式進行執(zhí)行,若認為調(diào)用方式涵蓋了run()方法的調(diào)用,則不能對新線程進行啟動,這就需要在對線程進行創(chuàng)建的過程中首選第一種方式,其接口相對靈活化。

        3.2 轉(zhuǎn)換線程狀態(tài)

        對線程 start()方式進行調(diào)用后,線程處于就緒形態(tài),時間片由Cpu進行分配,則線程處于運行形態(tài),那么時間片會結(jié)束,若沒執(zhí)行結(jié)束run()方法,線程就會阻塞。

        3.3 sleep方法

        Thread靜態(tài)方法為:

        public static void sleep(long millis)throws InterruptedException

        需要及時捕捉出現(xiàn)的異常狀況:

        Thread.currentThread();//獲取當(dāng)下的線程

        4 加速文件加載

        4.1文件加載算法流程

        因為寬帶的制約影響,基于客戶端所開展的下載操作,對于客戶端發(fā)出的請求,由tp=q(ts+tι)服務(wù)器端做出的響應(yīng),二者均可歸屬為串行操作,在實現(xiàn)過程中就需要發(fā)揮計算機java技術(shù)下加鎖方式的作用。在加載文件時,子線程形成解鎖和重復(fù)加鎖處理。通常獨立線程在對文件進行下載時,會遇到很多解鎖的狀況,所以q的大小和fk(鎖粒度)都同Sp(n)(加速比)存在很大的聯(lián)系。文件加載算法流程詳見圖1所示:

        4.2 多線程加載文件算法

        上述公式中,鎖外消耗時長表示為[tp],其占比重表示為q;解及加鎖消耗時長表示為[ tι],鎖內(nèi)消耗時長表示為[ts]。當(dāng)q是整數(shù)的情況下,意為首次申請才會形成鎖競爭,若q是小數(shù),那么會重復(fù)形成鎖競爭。運算并行下載時間的運算公式如下:

        上述公式中的文件塊數(shù)目表示為N,線程數(shù)目表示為h,[nh]的比值表示為k,機器處理核數(shù)表示為p,鎖粒度表示為fk,[fk=tsti]。

        結(jié)合公式得知:1)若[n]、[q]和[fk]均恒定時,因為q等于p,min/線程數(shù)及min/處理核數(shù);2)若[fk]恒定時,,因為q等于p,要借助移動終端多核處理器,開展并行處理操作;3)參考h、q二者的聯(lián)系,包括下述不同狀況:首先為[q ≤ h-1],同q、n及[fk]都存在聯(lián)系,條件吻合時得到最小[ tn];其次為[q>h-1],同h呈正比,因此不存在最小[tn]。

        5 線程之間的同步

        對相同變量進行訪問的過程中,對線程進行并行執(zhí)行時,若線程A賦值變量X的過程中,線程B應(yīng)對該變量數(shù)值進行讀取,線程A沒有賦值變量X時,B無法對數(shù)值進行讀取,怎樣解決這樣的問題?由此針對訪問變量X的方式,需要借助 synchronized 關(guān)鍵詞進行一定的修飾。該方式一旦被線程A所調(diào)用,其余線程就要經(jīng)歷等待的過程,線程A結(jié)束之后即可運用[5]。同步方式就是借助synchronized進行說明,在設(shè)計多線程程序中有著廣泛的應(yīng)用,能夠確保單個線程在相同時間對方法進行訪問,將線程間的同步變?yōu)榱爽F(xiàn)實。協(xié)商、共享不同資源的關(guān)鍵就在于同步。

        6 程序示例

        6.1 實現(xiàn)過程

        在對龜兔賽跑過程進行實現(xiàn)時,借助就是計算機JAVA,而多線程的實現(xiàn)就運用的是Runnable接口,單個類對Runnable接口進行實現(xiàn)的過程中,基于該類針對Runnable接口實現(xiàn)的run( ) 方式,并不能將類視作線程類。對線程進行啟動時,無法借助類的實例對start ( ) 方式進行直接的調(diào)用,應(yīng)利用Thread類對方法進行構(gòu)建。在Thread(Runnable target)完成對象構(gòu)建的任務(wù)后,對Thread對象下start()方法進行調(diào)用,由此能夠?qū)Χ嗑€程代碼進行運行。

        6.2 運行結(jié)果

        結(jié)合龜、兔賽跑的過程,賽跑結(jié)束對于烏龜來說需要耗費30S;而兔子在前2400M時耗時8S,而休息時長為12S,21S后繼續(xù)賽跑,4800M于28S結(jié)束,繼續(xù)休息。兔子在休息過程中烏龜已經(jīng)結(jié)束賽跑。運行結(jié)果詳見表1所示:

        烏龜、兔子的同時比賽借助多線程變?yōu)榱爽F(xiàn)實。實踐生活所出現(xiàn)的多線程狀況也比較常見,包括:很多飛機或火車售票口在相同時間賣票,各窗口表示獨立線程。對于此,存在不同線程對相同資源進行競爭的問題,代表不同的窗口存在對相同票進行售賣的可能性。所以在處理過程中,就需要運用多線程同步的技術(shù)。

        7 結(jié)束語

        結(jié)合Http協(xié)議,借助Java多線程技術(shù)可以對多線程斷點續(xù)傳程序進行編寫。系統(tǒng)幫助模塊、設(shè)置管理模塊、任務(wù)管理模塊及下載分類管理模塊共同組成了系統(tǒng)框架。子項目Http Client 包存在于Apache Jakarta Commons中,允許運行Http協(xié)議,可以對服務(wù)器端資源進行下載操作。多線程斷點續(xù)傳是該程序的關(guān)鍵作用,發(fā)揮多線程技術(shù)的作用,能夠使下載速率得到明顯的改善。

        參考文獻:

        [1] 劉引濤.? 基于Java的多線程下載工具研究與實現(xiàn)[J]. 現(xiàn)代電子技術(shù),2012(08):11-14.

        [2] 耿永利.? 基于Java的網(wǎng)絡(luò)管理系統(tǒng)開發(fā)與管理[J]. 漯河職業(yè)技術(shù)學(xué)院學(xué)報,2015(02):34-35.

        [3] 姚斌.? 基于JAVA的多線程下載器的設(shè)計[J]. 信息與電腦:理論版,2014(07):28-29.

        [通聯(lián)編輯:光文玲]

        精品日产卡一卡二卡国色天香| 色偷偷亚洲精品一区二区| 亚洲一区二区刺激的视频| 亚洲无线一二三四区手机| 性高朝久久久久久久| 日韩熟妇精品视频一区二区| 韩国黄色三级一区二区| 国产精品免费一区二区三区四区| 欧美最猛性xxxxx免费| 亚洲中文字幕无码二区在线| 麻豆激情视频在线观看| 一二三四区中文字幕在线| 国产精品爽黄69天堂a| 久久精品国产亚洲AV高清特级| 国产自产在线视频一区| 日韩亚洲中文有码视频| 国产精成人品| 中文字幕一区二区三区在线不卡| 国产视频免费一区二区| 狠狠躁天天躁无码中文字幕图| 国产成人午夜精华液| 亚洲高清有码在线观看| 精品麻豆一区二区三区乱码| 高潮抽搐潮喷毛片在线播放| 美丽人妻被按摩中出中文字幕| 日韩偷拍视频一区二区三区| 日韩美女亚洲性一区二区| 性欧美老人牲交xxxxx视频| 欧美在线成人午夜网站| 国产网红一区二区三区| 免费无码专区毛片高潮喷水| 国产剧情麻豆女教师在线观看| 亚洲成AV人片在一线观看| 日韩精品视频免费在线观看网站| 丰满少妇高潮惨叫久久久一 | 白丝美女扒开内露出内裤视频 | 中国xxx农村性视频| 欧美成人网视频| 国产自拍视频在线观看免费| 国产精品伦一区二区三级视频| 婷婷亚洲国产成人精品性色|