《Java程序設計教程》課件第12章 Java高級編程_第1頁
《Java程序設計教程》課件第12章 Java高級編程_第2頁
《Java程序設計教程》課件第12章 Java高級編程_第3頁
《Java程序設計教程》課件第12章 Java高級編程_第4頁
《Java程序設計教程》課件第12章 Java高級編程_第5頁
已閱讀5頁,還剩39頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

網絡編程2多線程31多媒體編程33本章內容提要

多線程是指同時存在幾個執行體,按幾條不同的執行線索共同工作的情況。Java語言內置對多線程的支持,這是Java語言的重要特點之一。它使得編程人員可以很方便地開發出具有多線程功能、能同時處理多個任務的功能強大的應用程序。

12.1多線程關于線程的幾個術語

1.程序

程序是一段靜態代碼,它是應用軟件執行的藍本。2.進程

進程是程序的一次動態執行過程,它對應了從代碼加載、執行至執行完畢的一個完整過程,這個也是進程本身從產生、發展至消亡的過程。3.線程線程與進程相似,是比進程更小的執行單位,線程是一段完成某個特定功能的代碼。12.1多線程4.多線程

多線程是一種允許在程序中并發執行彼此間相互獨立的多個線程的控制機制。多線程的執行是并發的,是邏輯上的“同時”,而不是物理上的“同時”。多個線程看似是同時執行,但事實上CPU只有一個,只能是輪流執行,線程不是真正的并行,只是并發。為了建立這些線程正在同步執行的感覺,Java快速地把控制從一個線程切換到另一個線程。12.1多線程創建和使用線程

Java語言中包含了一個Thread類對多線程的概念提供支持。Thread類實現了Runnable接口,在Runnable接口中定義了run()方法,創建線程類就要實現run()方法。

其格式定義為:

publicvoidrun(){}12.1多線程在Java中有兩種定義線程類的方法1.定義Thread類的子類構造線程定義一個繼承Thread類的子類,并在該類中重寫線程類的run()方法。可以直接實例化這個類,這個類的實例就是一個可執行的線程。[例12-1]通過繼承Thread類構造線程體12.1多線程2.通過接口構造線程實現java.lang.Runnable接口,并實現其run()方法。這個類的實例并不是一個可執行的線程,必須將它的實例作為參數傳給Thread類,做進一步的封裝。[例12-2]通過實現Runnable接口構造線程體12.1多線程3.兩種方法的比較(1)繼承Thread類優點:代碼簡單,實現線程直觀易懂。缺點:將無法再繼承其他類。(2)實現Runnable接口優點:要實現多線程只能采用實現Runnable接口的方法。缺點:沒有直接使用繼承Thread類創建線程方便。12.1多線程線程的調度1.線程的狀態線程的狀態表示了線程正在進行的活動以及在這段時間內線程能完成的任務。下圖表示了一個Java線程所具有的不同狀態。12.1多線程新建不可運行運行中可運行死亡2.線程的優先級多線程系統會給每個線程自動分配一個線程的優先級,任務較緊急的線程,,其優先級就較高,相反則較低。在線程排隊時,優先級高的線程可以排在較前的位置,能優先享用到處理器資源,對于優先級相同的線程。則遵循隊列的“先進先出”的原則。12.1多線程設置優先級的語句為:

Threadt1=newThread();t1.setPriority(5);Thread類還定義了3個常數,來表示線程優先級。

MAX_PRIORITY:最高優先級(值為10)。

MIN_PRIORITY:最低優先級(值為1)。

NORM_PRIORITY:默認優先級(值為5)。12.1多線程3.線程常用方法(1)start()(2)run()(3)join()(4)wait()(5)interrupt()(6)sleep(intmillsecond)12.1多線程(7)notify()(8)notifyAll()(9)isAlive()(10)currentThread()(11)getName()[例12-3]打斷線程12.1多線程張三正在睡覺,不聽課上課!上課!上課!張三被老師叫醒了張三開始聽課[例12-4]銀行匯款12.1多線程sum=100sum=200sum=300sum=400sum=500sum=600網絡編程基本知識

1.網絡通信方式面向連接的通信方式指雙方通信前首先建立連接,然后在傳遞數據,所有數據以包的形式按照一定的順序發送和接收,最后關閉連接。面向無連接的通信方式指雙方通信前不需要建立連接,雙方利用數據報來發送和接收相互獨立的數據包,是一種非可靠的無連接投遞報文的通信服務。12.2網絡編程2.通信協議TCP與UDP網絡上主機之間的應用程序進行通信時有兩個互不相同的傳輸協議:TCP(傳輸控制協議)和UDP(用戶數據報協議)。TCP是一種面向連接的保證可靠傳輸的協議。UDP是一種無連接的協議,每個數據報都是一個獨立的信息,包括完整的源地址或目的地址。

12.2網絡編程3.通信連接當采用TCP協議時,通信雙方之間首先要建立連接,也就是兩者分別運行不同的程序,由一端發出連接請求,另一端等候連接請求,當等候端收到請求并接受請求后,兩個程序就建立起一個連接,之后通過該連接進行數據交換。此時請求方稱為客戶端,接收方稱為服務端。這種通信機制稱為客戶/服務器(C/S)模式。12.2網絡編程

URL編程

1.URL的組成

URL的基本結構由五部分組成:

<協議名>://<主機名>[:<端口號>][/<文件名>][#<引用>]12.2網絡編程2.創建一個URL

(1)publicURL(Stringspec);

(2)publicURL(URLcontext,Stringspec);

(3)publicURL(Stringprotocol,Stringhost,Stringfile);

(4)publicURL(Stringprotocol,Stringhost,intport,Stringfile);

12.2網絡編程3.解析URL

一個URL對象生成后,其屬性是不能被改變的,但是URL類提供一些方法可以獲取這些屬性:publicStringgetProtocol()publicStringgetHost()

publicintgetPort()publicStringgetFile()12.2網絡編程4.通過URL訪問網絡資源當建立一個URL對象后,就可以通過它讀取指定的網絡資源。如果希望通過URL訪問文本資源,可以使用URL的方法openStream(),其定義為:

InputStreamopenStream();WWW,FTP等標準化的網絡服務都是基于TCP協議的,所以本質上講URL編程也是基于TCP的一種應用。12.2網絡編程[例12-6]利用URL訪問網站文件資源12.2網絡編程openingStream<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!--savedfromurl=(0014)about:internet--><htmlxmlns="/1999/xhtml"><head><metahttp-equiv="Content-Language"content="zh-cn"/><title>長春工業大學ChangChunUniversityOfTechnology當前在線:237</title><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/><!--頁面設計:JOBO,后期加工:苦蟬,模版編輯:跨平臺-->……StreamClosedSocket通信

Socket通信是以TCP為通信協議的一種面向連接的通信方式。Socket被稱為套接字,用于描述網絡的IP地址和端口,Java應用程序通過套接字向網絡發出請求,或者應答網絡請求來建立相互間的通信。12.2網絡編程1.Socket通信模式網絡應用程序通常采用客戶/服務器(C/S)模式,通過Socket進行C/S程序設計的一般連接過程是這樣的:服務器端(Server)監聽某個端口是否有連接請求,客戶端(Client)向服務器端發出連接請求,服務器端向客戶端發回接受消息。一個連接就建立起來,此后,服務器端和客戶就可以與對方進行通信了。12.2網絡編程

在選擇端口時,必須小心。每一個端口提供一種特定的服務,只有給出正確的端口,才能獲得相應的服務。端口號時,最好選擇一個大于1023的數以防止發生沖突。0~1023的端口號為系統所保留,例如http服務的端口號為80,telnet服務的端口號為21,ftp服務的端口號為23,所以在選擇在創建socket時如果發生錯誤,將產生IOException,在程序中必須對之作出處理。所以在創建Socket或ServerSocket是必須捕獲或拋出例外。12.2網絡編程[例12-6]利用Socket建立通信連接,設計C/S結構應用程序

程序運行時應首先啟動服務端程序,然后再運行客戶端;如果希望在兩個主機上運行該程序,需要修改客戶端程序中創建Socket對象時的服務器地址參數。12.2網絡編程數據報通信數據報通信是以UDP為通信協議的一種無連接的通信方式。數據報又稱為UDP套接字,它無需建立、拆除連接,而是直接將信息打包傳向指定的目的地,使用簡單,占用系統資源少,適合于非實時的通信。12.2網絡編程1.DatagramSocket類和DatagramPacket類(1)DatagramSocket類

DatagramSocket()

DatagramSocket(intprot)

DatagramSocket(intport,InetAddressladdr)

上述的三個構造方法都聲明拋棄非運行時例外SocketException,程序中必須進行處理,或者捕獲、或者聲明拋棄。12.2網絡編程(2)DatagramSocket類

DatagramPacket(bytebuf[],intlength)

DatagramPacket(bytebuf[],intlength,InetAddressaddr,intport)DatagramPacket(byte[]buf,intoffset,intlength)DatagramPacket(byte[]buf,intoffset,intlength,InetAddressaddress,intport)

12.2網絡編程

第一種和第三種構造方法用來創建接收數據的對象,然后調用DatagramSocket的方法receive()等待數據報的到來,receive()將一直等待,直到收到一個數據報為止。例如:

DatagramPacketpacket=newDatagramPacket(buf,256);

Socket.receive(packet);

12.2網絡編程

第二種和第三種構造方法用來創建發送數據報給遠程節點的對象,發送數據是通過DatagramSocket的方法send()實現的,send()根據數據報的目的地址來尋徑,以傳遞數據報。例如:

DatagramPacketpacket=newDatagramPacket(buf,length,address,port);

Socket.send(packet);12.2網絡編程[例12-7]利用數據報通信模式,建立應用程序的無連接通信。

12.2網絡編程客戶端運行情況:輸入發送的信息:你好,服務端請接受數據報!客戶端發送數據報完畢!

客戶端接收返回的數據報!服務端運行情況:服務器收到數據報!

多媒體指傳遞信息的載體,如數字、文字、聲音、圖形、圖像等等,多媒體技術的應用使得計算機軟件變得豐富多彩、趣味盎然。JMF是Java語言的一個用于多媒體處理的擴展應用開發包,其集成了多種媒體的采集、播放、傳輸等處理,應用JMF開發包可以大大簡化多媒體編程。12.3多媒體編程JMF功能以下是JMF支持的功能:1.播放各種媒體文件,如AU、AVI、MIDI、WAV等;2.播放從互聯網上下載的媒體流;3.利用麥克風和攝像機一類的設備截取音頻和視頻,并保存為多媒體文件;4.處理多媒體文件,轉換文件格式;5.向互聯網上傳音頻和視頻數據流;6.在互聯網上廣播音頻和視頻數據。12.3多媒體編程JMF的結構1.數據源2.截取設備

3.播放器

4.處理器

5.數據格式

6.管理器12.3多媒體編程JMF的媒體播放器媒體播放器是JMF的一個基本功能,視頻、音頻等多媒體都需要它的支持才能實現播放,媒體播放器的應用接口包括一個可視組件和一個控制面板組件,開發者可以使用默認的控制面板,也可以自行設計一個專用的用戶界面。12.3多媒體編程1.準備啟動播放器媒體播放器不能立即啟動,因為啟動之前需要滿足一些軟硬件的要求。例如,如果媒體播放器從未啟動過,就需要為其存儲媒體數據流分配內存緩沖區。在準備啟動過程中,首先調用realize()方法,使媒體播放器進入Realizing狀態,然后在調用prefetch()方法,使媒體播放器進入Prefetching狀態,并開始預取過程。12.3多媒體編程2.啟動和停止播放器調用start()方法使媒體播放器進入Started狀態,如果調用了start()方法,而媒體播放器又沒有預取到數據,則start()方法將執行預取操作,在取到媒體數據后,媒體播放器進入播放狀態(started狀態)。12.3多媒體編程3.釋放媒體播放器資源當媒體處于stopped狀態時,可以調用deallocate()方法釋放其占用的獨占性資源,并盡量減少對非獨占性資源的使用。對處于Prefetching或Prefeched狀態的媒體播放器調用deallocate()方法將使其退回到Realized狀態。如果媒體播放器處于播放狀態時調用deallocate()方法將產生一個DeallocateEvent事件,并返回到Unrealized狀態。12

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論