




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、學(xué)習(xí)導(dǎo)讀學(xué)習(xí)導(dǎo)讀 本章將介紹本章將介紹java語言中的一些高級特性:異語言中的一些高級特性:異常處理、多線程機(jī)制、流式常處理、多線程機(jī)制、流式io以及網(wǎng)絡(luò)通信,以及網(wǎng)絡(luò)通信,其中每個(gè)部分都能擴(kuò)展成一個(gè)專題。讀者在本其中每個(gè)部分都能擴(kuò)展成一個(gè)專題。讀者在本章學(xué)習(xí)到的只是其中很小的一部分,但是能夠章學(xué)習(xí)到的只是其中很小的一部分,但是能夠從中了解一些基本概念和基本操作,為今后的從中了解一些基本概念和基本操作,為今后的深入學(xué)習(xí)打下基礎(chǔ)。異常處理提供對錯(cuò)誤的捕深入學(xué)習(xí)打下基礎(chǔ)。異常處理提供對錯(cuò)誤的捕捉和處理機(jī)制;多線程機(jī)制使得程序的多個(gè)子捉和處理機(jī)制;多線程機(jī)制使得程序的多個(gè)子任務(wù)能夠任務(wù)能夠“同時(shí)同時(shí)
2、”執(zhí)行;流式執(zhí)行;流式io提供了對輸入提供了對輸入輸出的讀寫機(jī)制;網(wǎng)絡(luò)通信特性允許輸出的讀寫機(jī)制;網(wǎng)絡(luò)通信特性允許java程序程序通過通過socket實(shí)現(xiàn)底層通信,并利用實(shí)現(xiàn)底層通信,并利用java提供的提供的擴(kuò)展組件實(shí)現(xiàn)高層服務(wù)。擴(kuò)展組件實(shí)現(xiàn)高層服務(wù)。第九章 java高級編程 教學(xué)重點(diǎn)與難點(diǎn)教學(xué)重點(diǎn)與難點(diǎn):v異常處理、多線程機(jī)制、流式異常處理、多線程機(jī)制、流式io以及網(wǎng)絡(luò)通以及網(wǎng)絡(luò)通信的基本概念和模型信的基本概念和模型v異常的捕獲和處理異常的捕獲和處理v多線程的實(shí)現(xiàn)及多線程的實(shí)現(xiàn)及runnable接口的應(yīng)用接口的應(yīng)用v流式輸入輸出的操作、文件讀寫及隨機(jī)訪問流式輸入輸出的操作、文件讀寫及隨機(jī)訪
3、問v基于基于socket的面向連接的網(wǎng)絡(luò)底層通信及高的面向連接的網(wǎng)絡(luò)底層通信及高層服務(wù)層服務(wù)9.1 異常處理在java中,提供了錯(cuò)誤捕捉和處理機(jī)制,即異常處理機(jī)制。在程序運(yùn)行過程中發(fā)生錯(cuò)誤時(shí),java允許其不按照正常路徑完成任務(wù),由發(fā)現(xiàn)錯(cuò)誤的方法拋出封裝了錯(cuò)誤信息的對象(異常)到其調(diào)用程序,發(fā)出已經(jīng)發(fā)生問題的信號(hào),然后立即退出;而且,程序并不在調(diào)用該方法的代碼處繼續(xù)執(zhí)行,而是由異常處理機(jī)制開始搜索一個(gè)能夠處理這種特定錯(cuò)誤情況的異常處理器。9.1.1 異常分類 throwable類派生出兩個(gè)分支:error和exception。error類被認(rèn)為是不能恢復(fù)的嚴(yán)重錯(cuò)誤,如系統(tǒng)內(nèi)部錯(cuò)誤和資源耗盡錯(cuò)誤
4、等。不應(yīng)該拋出這種類型的錯(cuò)誤,而是讓程序中斷。exception類定義可能遇到的輕微錯(cuò)誤,分為派生自runtimeexception類的異常和非派生自runtimeexception類的異常。這時(shí),可以寫代碼來處理異常并繼續(xù)程序執(zhí)行,而不是讓程序中斷。區(qū)分runtimeexception和非runtimeexception的規(guī)則是:編程錯(cuò)誤導(dǎo)致runtimeexception,如被零除、數(shù)組越界訪問、空指針訪問等;而其他異常則是由于意外情況而發(fā)生的,如試圖讀取文件結(jié)尾以后的數(shù)據(jù)、試圖打開錯(cuò)誤的url、試圖根據(jù)并不代表已存在類的字符串來查找class對象等。9.1.2 方法如何拋出異常 /本方法
5、從長度為2048字節(jié)的某文件中讀入數(shù)據(jù)到字符串對象中。string readfile(bufferedreader in) throws eofexception.while(.)/ch為當(dāng)前讀入的字符。if(ch = -1) /文件尾;/當(dāng)nlen,意味著還未將文件全部讀入字符串,就遇到文件結(jié)束標(biāo)志,視為異常情況。if(n len) throw new eofexception();/或者采用下面的方法:/if(n java filedirectory運(yùn)行結(jié)果如下:顯示指定目錄的內(nèi)容1.ppt2.xls3.docfiledirectory.javafiledirectory.classe:d
6、emotemptemp1.txttemp2.txt更改文件名后,顯示temp子目錄的內(nèi)容temp.txttemp2.txt刪除文件后,顯示temp子目錄的內(nèi)容temp.txt9.4 java網(wǎng)絡(luò)通信傳統(tǒng)的網(wǎng)絡(luò)編程是一項(xiàng)非常細(xì)節(jié)化的工作,程序員必須處理和網(wǎng)絡(luò)有關(guān)的大量細(xì)節(jié),如各種協(xié)議,甚至要理解網(wǎng)絡(luò)相關(guān)的硬件知識(shí)。而java則將底層的網(wǎng)絡(luò)通信細(xì)節(jié)予以屏蔽,使得使用的編程模型是一個(gè)文件模型,也就是說,可以象操作流一樣來操作網(wǎng)絡(luò)數(shù)據(jù)傳輸。另外,由于在網(wǎng)絡(luò)連接中,通常都需要一個(gè)服務(wù)器同時(shí)為多個(gè)客戶端服務(wù),因此java的多線程機(jī)制也大派用場。9.4.1網(wǎng)絡(luò)基礎(chǔ)知識(shí)及java網(wǎng)絡(luò)模型java網(wǎng)絡(luò)模型圖 9
7、.4.2面向連接的流式套接字 【例9.14】具有“回顯”功能的服務(wù)器端和客戶端程序。服務(wù)器端的程序?qū)⒌却蛻舳说妮斎耄缓髮⒖蛻舳说妮斎牖仫@給客戶端,同時(shí)在服務(wù)器端的控制臺(tái)輸出。而客戶端從控制臺(tái)接收輸入后,向服務(wù)器端發(fā)送輸入,并接收服務(wù)器端的回顯數(shù)據(jù),然后顯示在控制臺(tái)。 程序代碼見echoserver.java和echoclient.java。服務(wù)器端程序運(yùn)行結(jié)果如下:started: serversocketaddr=/,port=0,localport=9999connection accepted: socketaddr=/,port=162
8、3,localport=9999hello! enter bye to exit.echo: abcecho: cdeecho: efgthe client entered bye!connection will be closed!客戶端程序運(yùn)行結(jié)果如下:socket = socketaddr=localhost/,port=9999,localport=1623enter a string, enter bye to exit!abcecho: abccdeecho: cdeefgecho: efgbye【例9.15】支持多客戶端的“回顯”服務(wù)器端程序。程序代碼見echo
9、serverthread .java。我們先啟動(dòng)服務(wù)器端,然后啟動(dòng)兩個(gè)客戶端。服務(wù)器端程序運(yùn)行結(jié)果如下:started: serversocketaddr=/,port=0,localport=9999connection 1 accepted: socketaddr=/,port=1656,localport=9999hello! enter bye to exit.connection 2 accepted: socketaddr=/,port=1657,localport=9999hello! enter bye to ex
10、it.echo 1: abcecho 2: abcecho 2: cdeecho 1: cdeecho 2: efgthe client 2 entered bye!connection 2 will be closed!echo 1: efgecho 1: hijkthe client 1 entered bye!connection 1 will be closed!第一個(gè)客戶端運(yùn)行結(jié)果如下:socket = socketaddr=localhost/,port=9999,localport=1656enter a string, enter bye to exit!ab
11、cecho 1: abccdeecho 1: cdeefgecho 1: efghijkecho 1: hijkbye第二個(gè)客戶端運(yùn)行結(jié)果如下:socket = socketaddr=localhost/,port=9999,localport=1657enter a string, enter bye to exit!abcecho 2: abccdeecho 2: cdeefgecho 2: efgbye9.4.3無連接的數(shù)據(jù)報(bào) 對于類似傳輸速度更重要的應(yīng)用,使用無連接的數(shù)據(jù)報(bào)協(xié)議udp,即“用戶數(shù)據(jù)報(bào)協(xié)議”。udp并不刻意追求數(shù)據(jù)包會(huì)完全發(fā)送出去,也不能擔(dān)保它們抵達(dá)的順
12、序與它們發(fā)出時(shí)一樣,因此,這是一種“不可靠協(xié)議”。由于其速度比tcp快得多,所以還是能夠在很多應(yīng)用中使用。java對數(shù)據(jù)報(bào)的支持與它對tcp套接字的支持大致相同,使用datagramsocket類來表示無連接的socket,接收和發(fā)送數(shù)據(jù)報(bào)。接收和要發(fā)送的數(shù)據(jù)報(bào)內(nèi)容保存在datagrampacket對象中。udp也有自己的端口,和tcp端口是相互獨(dú)立的。也就是說,可以在端口8080同時(shí)運(yùn)行一個(gè)tcp和udp服務(wù)程序,兩者之間不會(huì)產(chǎn)生沖突。9.4.4 java訪問網(wǎng)絡(luò)資源 在因特網(wǎng)上,已經(jīng)開發(fā)了許多服務(wù),如www瀏覽、email等,而java也提供了相應(yīng)的擴(kuò)展組件,如對于email應(yīng)用,java
13、提供了javamail api,使用時(shí)只需要調(diào)用其提供的方法就可以完成如發(fā)送郵件的操作:transport.send(message);在因特網(wǎng)上,我們使用通用資源定位符url(uniform resource locator)來查找資源。url包含了用于查找某個(gè)資源的信息,如一張圖片、一個(gè)文件等。url資源可以包括很多種,如http資源、ftp資源等。下面就是一個(gè)圖像資源的url,屬于http資源。http:/ 。程序代碼見internetaccess.java。程序運(yùn)行結(jié)果如下:本章小結(jié) 通過本章的學(xué)習(xí),了解了java異常處理、多線程機(jī)制、流式io以及網(wǎng)絡(luò)通信的基本概念和模型。在異常處理中,通過java語言提供的先進(jìn)的錯(cuò)誤糾正與恢復(fù)機(jī)制,可以有效地增強(qiáng)代碼的健壯程度,并使用盡可能精簡的代碼創(chuàng)建大型、可靠的應(yīng)用程序,同時(shí)排除程序里那些不能控制的錯(cuò)誤。java強(qiáng)迫遵守違例所有方面的問題,所以無論庫設(shè)計(jì)者還是客戶程序員,都能夠連續(xù)一致地使用它。使用多線程機(jī)制的主要目的是對大量任務(wù)進(jìn)行有序的管理,從而可以通過“輕度”切換來更有效地利用計(jì)算機(jī)資源,或者對用戶來說使用界面更加友好,相比進(jìn)程之間的“重度”切換,效率得到很大提高。有效利用計(jì)算機(jī)資源的典型應(yīng)用是在io等候期間如何利用cpu;用戶方面的界面友好性的典型體現(xiàn)是如何在一個(gè)長時(shí)間的數(shù)據(jù)下載過程中靈敏地對“停止”(stop)操作進(jìn)行反應(yīng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車大集活動(dòng)方案
- 梅州七一活動(dòng)方案
- 沃爾瑪?shù)郊一顒?dòng)方案
- 汽車發(fā)布活動(dòng)方案
- 母親節(jié)女裝優(yōu)惠活動(dòng)方案
- 水霧魔法活動(dòng)方案
- 母嬰年底活動(dòng)方案
- 法制話劇活動(dòng)方案
- 模擬招聘活動(dòng)方案
- 森林城市活動(dòng)方案
- 嬰幼兒聽說能力發(fā)展訓(xùn)練方法育嬰師培訓(xùn)崔香娟課件
- 2024人教版新教材初中地理七年級下冊內(nèi)容解讀課件(深度)
- 醫(yī)院感染的多重耐藥菌與感染控制
- 主管護(hù)師競聘匯報(bào)
- 工程報(bào)修流程
- 公園突發(fā)事件應(yīng)急管理預(yù)案
- 2025年山東省機(jī)場管理集團(tuán)招聘筆試參考題庫含答案解析
- 2025年內(nèi)蒙古農(nóng)村信用社招聘筆試參考題庫含答案解析
- 燒傷傷員入院處置技術(shù)
- 檔案庫房安全
- 醫(yī)療機(jī)構(gòu)感染預(yù)防與控制基本制度解讀
評論
0/150
提交評論