国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

WEB項(xiàng)目中JAVA多線程的運(yùn)用

2014-07-24 04:19:36廖先琴
無線互聯(lián)科技 2014年5期
關(guān)鍵詞:服務(wù)器端公平性線程

廖先琴

摘 要:JAVA語言是一種應(yīng)用非常廣泛的語言,從桌面應(yīng)用程序到WEB應(yīng)用都有其身影的存在,WEB項(xiàng)目中的服務(wù)器端就有如Servlet、JSP和數(shù)目眾多的第三方框架支持,JAVA能在WEB應(yīng)用中爭(zhēng)得一席之地與它的各種特性是分不開的,其中就包括它出色的多線程機(jī)制。本文將在眾多文獻(xiàn)基礎(chǔ)上,探討WEB項(xiàng)目中如何應(yīng)用好JAVA的多線程機(jī)制。

關(guān)鍵詞:WEB;JAVA多線程

1 WEB項(xiàng)目應(yīng)用JAVA的優(yōu)勢(shì)

在WEB開發(fā)項(xiàng)目中,可供選擇的語言并不少,當(dāng)前尤以JAVA語言最為受到程序開發(fā)人員的寵愛,它是一種面向?qū)ο蟮木幊陶Z言,在1995年SUN公司推出,之后就迅速的憑借它的高度通用型、強(qiáng)大的可移植性以及安全性迅速流行起來,滲透到了眾多開發(fā)領(lǐng)域。在現(xiàn)在的WEB項(xiàng)目開發(fā)中,服務(wù)器端程序設(shè)計(jì)是非常重要的部分。用JAVA作為開發(fā)語言有著明顯的優(yōu)勢(shì):(1)支持多線程,并具有出色的多線程安全機(jī)制。作為接受眾多客戶訪問的服務(wù)器,必須要求能夠妥善處理各種并發(fā)事件,也就是用于開發(fā)服務(wù)器端的語言一定要支持多線程且應(yīng)具備較高的多線程安全性。(2)通用性強(qiáng)。在許多的WEB項(xiàng)目中,服務(wù)器端還可能面臨來自不同類型客戶端的訪問,所以開發(fā)服務(wù)器端的語言還應(yīng)具有較高的通用性。

2 JAVA的多線程及應(yīng)用方法

進(jìn)程并不會(huì)執(zhí)行代碼,代碼的執(zhí)行體是線程,一般的情況下,我們所說的多線程是指程序在計(jì)算機(jī)上存在多個(gè)控制流并發(fā)執(zhí)行,它們均屬于同一個(gè)進(jìn)程。操作系統(tǒng)一般會(huì)提供基本的多線程操作API并維護(hù)多線程環(huán)境,包括堆棧、寄存器、環(huán)境變量、句柄等等。我們想用JAVA的多線程,就應(yīng)該先了解JAVA的多線程。JAVA的多線程用法比操作系統(tǒng)提供的原始的多線程相關(guān)API更加的簡(jiǎn)單,也更加的安全,許多多線程編程中需要注意的問題JAVA都已經(jīng)幫開發(fā)人員做好了,因此,開發(fā)人員可以很容易的應(yīng)用JAVA寫出能夠良好運(yùn)行的多線程程序,從而節(jié)省出更多的精力用于功能程序設(shè)計(jì)上。

2.1 JAVA下多線程的創(chuàng)建

使用JAVA創(chuàng)建多線程有兩種方法,一種是讓線程類從Thread繼承,然后重載它的run()方法,重載后的run()方法將作為該類的線程代碼入口點(diǎn)。另一種方法是讓編寫的線程類實(shí)現(xiàn)Runnalbe接口,并重載接口里面的run()方法。之所以有兩種創(chuàng)建方法是為了消除JAVA的單繼承局限性。

2.2 JAVA的多線程使用方法

編寫多線程程序,便避不開一些多線程調(diào)度的問題,多線程在運(yùn)行期間共享資源的管理、線程之間的同步都需要考慮。JAVA提供了一些機(jī)制來做這些事情。在對(duì)共享資源訪問的問題上,可以用Synchronized關(guān)鍵字,將訪問共享資源的代碼方法前加上該關(guān)鍵字就可以保證該代碼塊同一時(shí)間只能有一個(gè)線程在運(yùn)行。在JAVA線程同步問題上,有兩個(gè)重要的方法,分別是wait()和notify()。wait()方法的作用是停止線程的運(yùn)行,等待其他線程通知后在繼續(xù)運(yùn)行;notify()方法的作用通知某線程可以繼續(xù)運(yùn)行。以上為JAVA中編寫多線程程序必須掌握的基本技術(shù),除此之外還有線程讓步、線程合并以及線程優(yōu)先級(jí)的設(shè)定等常用技術(shù)也應(yīng)掌握。

2.3 多線程的生命周期

在WEB項(xiàng)目中,編寫多線程程序幾乎是必須的,怎樣利用有限的系統(tǒng)資源合理利用多線程是開發(fā)人員必須考慮的問題。一般情況下,網(wǎng)絡(luò)服務(wù)器中的線程按照功能可以分為兩類,一類用作并發(fā)服務(wù),而另一類用作反復(fù)服務(wù)。JAVA中的線程起于線程類中的start方法,之后轉(zhuǎn)入到就緒狀態(tài),等待操作系統(tǒng)進(jìn)行資源調(diào)度,操作系統(tǒng)完成準(zhǔn)備任務(wù)后,將執(zhí)行上文中提到的run()方法,線程開始運(yùn)行。運(yùn)行過程中,線程可以在就緒、阻塞狀態(tài)當(dāng)中轉(zhuǎn)換,最后當(dāng)不再需要該線程時(shí),會(huì)觸發(fā)InterruptedException異常,系統(tǒng)會(huì)截獲該異常并結(jié)束線程。

3 使用JAVA多線程值得注意的問題

多線程程序的編寫復(fù)雜程度遠(yuǎn)超單線程程序,但在WEB項(xiàng)目的開發(fā)中又必須依靠多線程來提高系統(tǒng)服務(wù)效率,所以在應(yīng)用JAVA多線程進(jìn)行編程時(shí)一定要小心,避免因應(yīng)用多線程而導(dǎo)致系統(tǒng)出現(xiàn)問題,最常見的問題就是在并發(fā)系統(tǒng)中的公平性與安全性問題。

在WEB應(yīng)用中會(huì)存在多個(gè)客戶,程序需要經(jīng)常訪問服務(wù)器中的共享資源,雖然服務(wù)器程序在宏觀上是保持并發(fā)性的,但是在微觀上各個(gè)線程卻是獨(dú)占系統(tǒng)資源執(zhí)行的,并發(fā)性的本質(zhì)其實(shí)是CPU快速的在不同線程間切換執(zhí)行。多個(gè)線程對(duì)共享資源訪問時(shí),如果處理不好就會(huì)導(dǎo)致數(shù)據(jù)安全性問題或者是反方向的線程公平性問題。

為了數(shù)據(jù)安全性,在編寫多線程程序時(shí)對(duì)共享資源的訪問設(shè)置一般都是線程獨(dú)占的,同一時(shí)刻只能有一個(gè)線程訪問,其他線程處于等待狀態(tài)。如果說在系統(tǒng)里的多線程中存在部分優(yōu)先級(jí)較其他線程優(yōu)先級(jí)高并且一直都有高優(yōu)先級(jí)線程插隊(duì)訪問資源,那么對(duì)于低優(yōu)先的線程就是不公平的,表現(xiàn)出來的現(xiàn)象可能就是執(zhí)行某一個(gè)功能但是服務(wù)器無回應(yīng)。反之,如果過多的關(guān)注線程之間的公平性,那么有可能造成本應(yīng)由優(yōu)先級(jí)更高的線程獲得資源,但是卻被低優(yōu)先級(jí)線程長(zhǎng)期占有。處理數(shù)據(jù)安全性與線程公平性的問題,最好的方法是依靠線程運(yùn)行情況動(dòng)態(tài)的調(diào)整線程優(yōu)先級(jí),視情況不同采取不同的控制調(diào)配策略。

[參考文獻(xiàn)]

[1]顧曉寧.基于JAVA語言在WEB開發(fā)的知識(shí)探討[J].湖北函授大學(xué)學(xué)報(bào),2012(01).

[2]高飛.使用JAVA語言開發(fā)WEB應(yīng)用軟件的知識(shí)探討[J].電子世界,2012(05).

[3]李雙權(quán).一種Java多線程可達(dá)性測(cè)試框架系統(tǒng)的研究和實(shí)現(xiàn)[D].暨南大學(xué),2003(04).

[4]韋慶清,任衛(wèi)東.Java多線程編程中數(shù)據(jù)安全的應(yīng)用研究[J].現(xiàn)代計(jì)算機(jī),2012(09).

猜你喜歡
服務(wù)器端公平性線程
淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
成功(2018年10期)2018-03-26 02:56:14
一種提高TCP與UDP數(shù)據(jù)流公平性的擁塞控制機(jī)制
淺談linux多線程協(xié)作
公平性問題例談
在Windows中安裝OpenVPN
關(guān)于公平性的思考
華東理工大學(xué)學(xué)報(bào)(自然科學(xué)版)(2014年1期)2014-02-27 13:48:36
華東理工大學(xué)學(xué)報(bào)(自然科學(xué)版)(2014年1期)2014-02-27 13:48:36
Linux線程實(shí)現(xiàn)技術(shù)研究
網(wǎng)頁防篡改中分布式文件同步復(fù)制系統(tǒng)
常山县| 绥中县| 泰顺县| 信丰县| 芜湖县| 轮台县| 涪陵区| 宁海县| 柞水县| 胶南市| 朝阳市| 丰顺县| 分宜县| 忻城县| 渭南市| 长治县| 土默特右旗| 林芝县| 禄劝| 长海县| 亳州市| 苍南县| 白城市| 台南县| 静宁县| 民丰县| 共和县| 措美县| 岑巩县| 嘉鱼县| 泊头市| 南漳县| 精河县| 汝州市| 清涧县| 兰溪市| 宜州市| 霸州市| 利辛县| 四平市| 和平区|