王 弢
天津冶金集團(tuán)中興盛達(dá)鋼業(yè)有限公司
線程的是java.lang.Thread類,在虛擬機(jī)啟動(dòng)之后,通常只有Java類的main方法這個(gè)普通線程運(yùn)行,運(yùn)行時(shí)可以創(chuàng)建和啟動(dòng)新的線程;守護(hù)線程(damonthread),守護(hù)線程在后臺(tái)運(yùn)行,提供程序運(yùn)行時(shí)所需的服務(wù)。當(dāng)虛擬機(jī)中運(yùn)行的所有線程都是守護(hù)線程時(shí),虛擬機(jī)終止運(yùn)行。Java線程模型涉及可以動(dòng)態(tài)更改的線程優(yōu)先級(jí)。線程的優(yōu)先級(jí)是從1到10之間的一個(gè)數(shù)字,數(shù)字越大表明的任務(wù)越緊急。
JVM的標(biāo)準(zhǔn)需要先選用較高優(yōu)先級(jí)的線程,再過(guò)渡到較低線程,因此,整個(gè)標(biāo)準(zhǔn)在處理相同級(jí)別的線程時(shí)通常采取隨機(jī)原則,處理線程的關(guān)鍵因素為基層操作系統(tǒng)。
由于Java多線程中各個(gè)線程是并發(fā)的,因此這些線程相互之間單獨(dú)且互不依賴的,相反這些線程之間存在著競(jìng)爭(zhēng)關(guān)系,它們互不相讓,共同競(jìng)爭(zhēng)著CUP資源和存儲(chǔ)空間,甚至還會(huì)發(fā)生還阻斷其他的線程共享CPU資源和存儲(chǔ)空間的異步訪問(wèn)情況,這就是線程之間的相互牽制。比如,在網(wǎng)絡(luò)通信的多線程實(shí)際應(yīng)用過(guò)程當(dāng)中,多線程不僅需要同步進(jìn)行通信訪問(wèn),且多個(gè)線程互相之間的也可以牽制,限制其他通信訪問(wèn)。
在具體的網(wǎng)絡(luò)通信過(guò)程中,多線程的工作步驟如下:首先我們必須讓一個(gè)線程執(zhí)行符合條件的指令,只有當(dāng)條件滿足的時(shí)候方可讓線程二執(zhí)行,然后,當(dāng)其中線程二執(zhí)行完指令后,馬上通知條件線程繼續(xù)執(zhí)行條件指令,當(dāng)條件滿足又讓其他線程再次執(zhí)行,如此不停循環(huán)往復(fù)讓多個(gè)線程不停的執(zhí)行下去,從而讓眾多的網(wǎng)絡(luò)通信不停的運(yùn)轉(zhuǎn)下去。
Java屬于比較強(qiáng)大的編程設(shè)計(jì)語(yǔ)言,其在網(wǎng)絡(luò)編程方面也展現(xiàn)出極大的優(yōu)勢(shì),在功能上表現(xiàn)出極為強(qiáng)大的作用,由此推動(dòng)這一編程設(shè)計(jì)程序得以廣泛應(yīng)用。一般來(lái)說(shuō),針對(duì)支持Java的瀏覽器而言,需要內(nèi)置Java虛擬機(jī),這在某種程度上推動(dòng)Java的小程序能夠正常的應(yīng)用,并且可以在網(wǎng)絡(luò)上傳送及運(yùn)行。Java的功能性得到了極好的體現(xiàn),這其中給予分布對(duì)象環(huán)境,Socket通信機(jī)制,還有用于Internet的URL對(duì)象類群等,除此之外,還給予可以處理HTTP請(qǐng)求,還有應(yīng)答,從而用于擴(kuò)充Web服務(wù)器的Servlet。
服務(wù)器是所有程序運(yùn)行的核心所在,不僅僅是客戶,還有服務(wù)器模型,都發(fā)揮了極為關(guān)鍵性的作用,客戶端針對(duì)服務(wù)器來(lái)說(shuō),前者對(duì)于后者請(qǐng)求幾乎是隨意的,多個(gè)請(qǐng)求同時(shí)到達(dá)也是有可能出現(xiàn)的。一般來(lái)說(shuō),基本存在兩種服務(wù)器方案,其一是并發(fā)服務(wù)器,其自身具有極為顯著的特征,主要是依據(jù)系統(tǒng)啟動(dòng)逐步形成守護(hù)線程,沒(méi)有客戶請(qǐng)求的情況下,基本處于等待狀態(tài),如果客戶需要到達(dá),服務(wù)器就會(huì)發(fā)揮自身的功能性作用,隨即產(chǎn)生子線程,然后借由子線程去完成請(qǐng)求,再回到等待狀態(tài),并發(fā)服務(wù)器,又被稱為主服務(wù)器,而子線程又稱為從服務(wù)器,這種服務(wù)器模式具有非常重要的作用,從根本上消除聊天室的弊端,完善客戶端結(jié)構(gòu)。這其中服務(wù)器自身的功能非常明確,也就是負(fù)責(zé)用戶注冊(cè),還有用戶的管理,監(jiān)聽(tīng)連接請(qǐng)求,并且負(fù)責(zé)響應(yīng)鏈接,并同時(shí)進(jìn)行接收用戶信息,傳遞用戶信息,而客戶端則負(fù)責(zé)用戶界面,包括其顯示與更新信息,發(fā)送聊天記錄,并且接收相應(yīng)用戶信息。
新用戶登陸時(shí),服務(wù)器端應(yīng)用newServerThread單獨(dú)創(chuàng)建,同時(shí)啟動(dòng)服務(wù)器線程,自從其產(chǎn)生直至滅亡,在整個(gè)過(guò)程中都涉及到服務(wù)內(nèi)容,從某種意義上來(lái)說(shuō),該線程作用非常顯著且目的明確,針對(duì)的是服務(wù)器與用戶信息,負(fù)責(zé)信息發(fā)送及接收,從而構(gòu)建屬于自身的功能性體驗(yàn)。
客戶端的構(gòu)成相對(duì)來(lái)說(shuō)比較固定,一般情況下都是由JavaApple小程序,還有Java程序組成,而上述程序的功能也相對(duì)比較固定,主要是為了達(dá)到用戶界面的通信控制,還有服務(wù)器控制,根據(jù)其功能性可以細(xì)分為兩個(gè)部分,并且是相對(duì)獨(dú)立的兩個(gè)部分,然后再由不同的類實(shí)現(xiàn)。第一部分,是對(duì)管理圖形進(jìn)行界面管理,由類ChatApplet實(shí)現(xiàn);而對(duì)于第二部分,則需要實(shí)現(xiàn)通信功能,還有服務(wù)器功能,主要涵蓋用戶狀態(tài)信息,還有聊天信息傳遞,主要是通過(guò)由類Clinent實(shí)現(xiàn)。
客戶端線程也是多線程的一種重要形式,相較于服務(wù)器線程而言,在功能上相對(duì)來(lái)說(shuō)比較類似,服務(wù)的對(duì)象也是非常明確,即客戶端與用戶信息,實(shí)現(xiàn)兩者信息的發(fā)送,還有相應(yīng)的接收工作,上述功能實(shí)現(xiàn)基本上也和服務(wù)器線程比較相似,因而對(duì)于客戶端線程的構(gòu)建,可以參考服務(wù)器線程的相關(guān)介紹。
總而言之,在信息化高度發(fā)達(dá)的今天,為客戶提供快而準(zhǔn)的服務(wù)是每個(gè)行業(yè)發(fā)展的必然趨勢(shì),網(wǎng)絡(luò)通信與我們每個(gè)人都有著密切關(guān)系,可想而知它在我們生活工作當(dāng)中的重要性之大。為了更好讓學(xué)習(xí)多線程技術(shù)的知識(shí),我們非常有必要Java多線程技術(shù)有一個(gè)深刻的認(rèn)識(shí),認(rèn)識(shí)其對(duì)于網(wǎng)絡(luò)通信的重要性。未來(lái),我們還將更好的晚上Java多線程技術(shù),讓其更好的為我們未來(lái)的工作生活服務(wù),加快計(jì)算機(jī)信息化的發(fā)展。
[1]程俊波.基于java多線程的實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2016(10):67-68.
[2]陳偉.基于擴(kuò)展同步序列的Java多線程程序可達(dá)性測(cè)試方法探討[J].電子世界,2016(13):168.