




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
網(wǎng)絡(luò)編程2多線程31多媒體編程33本章內(nèi)容提要
多線程是指同時(shí)存在幾個(gè)執(zhí)行體,按幾條不同的執(zhí)行線索共同工作的情況。Java語(yǔ)言內(nèi)置對(duì)多線程的支持,這是Java語(yǔ)言的重要特點(diǎn)之一。它使得編程人員可以很方便地開(kāi)發(fā)出具有多線程功能、能同時(shí)處理多個(gè)任務(wù)的功能強(qiáng)大的應(yīng)用程序。
12.1多線程關(guān)于線程的幾個(gè)術(shù)語(yǔ)
1.程序
程序是一段靜態(tài)代碼,它是應(yīng)用軟件執(zhí)行的藍(lán)本。2.進(jìn)程
進(jìn)程是程序的一次動(dòng)態(tài)執(zhí)行過(guò)程,它對(duì)應(yīng)了從代碼加載、執(zhí)行至執(zhí)行完畢的一個(gè)完整過(guò)程,這個(gè)也是進(jìn)程本身從產(chǎn)生、發(fā)展至消亡的過(guò)程。3.線程線程與進(jìn)程相似,是比進(jìn)程更小的執(zhí)行單位,線程是一段完成某個(gè)特定功能的代碼。12.1多線程4.多線程
多線程是一種允許在程序中并發(fā)執(zhí)行彼此間相互獨(dú)立的多個(gè)線程的控制機(jī)制。多線程的執(zhí)行是并發(fā)的,是邏輯上的“同時(shí)”,而不是物理上的“同時(shí)”。多個(gè)線程看似是同時(shí)執(zhí)行,但事實(shí)上CPU只有一個(gè),只能是輪流執(zhí)行,線程不是真正的并行,只是并發(fā)。為了建立這些線程正在同步執(zhí)行的感覺(jué),Java快速地把控制從一個(gè)線程切換到另一個(gè)線程。12.1多線程創(chuàng)建和使用線程
Java語(yǔ)言中包含了一個(gè)Thread類(lèi)對(duì)多線程的概念提供支持。Thread類(lèi)實(shí)現(xiàn)了Runnable接口,在Runnable接口中定義了run()方法,創(chuàng)建線程類(lèi)就要實(shí)現(xiàn)run()方法。
其格式定義為:
publicvoidrun(){}12.1多線程在Java中有兩種定義線程類(lèi)的方法1.定義Thread類(lèi)的子類(lèi)構(gòu)造線程定義一個(gè)繼承Thread類(lèi)的子類(lèi),并在該類(lèi)中重寫(xiě)線程類(lèi)的run()方法??梢灾苯訉?shí)例化這個(gè)類(lèi),這個(gè)類(lèi)的實(shí)例就是一個(gè)可執(zhí)行的線程。[例12-1]通過(guò)繼承Thread類(lèi)構(gòu)造線程體12.1多線程2.通過(guò)接口構(gòu)造線程實(shí)現(xiàn)java.lang.Runnable接口,并實(shí)現(xiàn)其run()方法。這個(gè)類(lèi)的實(shí)例并不是一個(gè)可執(zhí)行的線程,必須將它的實(shí)例作為參數(shù)傳給Thread類(lèi),做進(jìn)一步的封裝。[例12-2]通過(guò)實(shí)現(xiàn)Runnable接口構(gòu)造線程體12.1多線程3.兩種方法的比較(1)繼承Thread類(lèi)優(yōu)點(diǎn):代碼簡(jiǎn)單,實(shí)現(xiàn)線程直觀易懂。缺點(diǎn):將無(wú)法再繼承其他類(lèi)。(2)實(shí)現(xiàn)Runnable接口優(yōu)點(diǎn):要實(shí)現(xiàn)多線程只能采用實(shí)現(xiàn)Runnable接口的方法。缺點(diǎn):沒(méi)有直接使用繼承Thread類(lèi)創(chuàng)建線程方便。12.1多線程線程的調(diào)度1.線程的狀態(tài)線程的狀態(tài)表示了線程正在進(jìn)行的活動(dòng)以及在這段時(shí)間內(nèi)線程能完成的任務(wù)。下圖表示了一個(gè)Java線程所具有的不同狀態(tài)。12.1多線程新建不可運(yùn)行運(yùn)行中可運(yùn)行死亡2.線程的優(yōu)先級(jí)多線程系統(tǒng)會(huì)給每個(gè)線程自動(dòng)分配一個(gè)線程的優(yōu)先級(jí),任務(wù)較緊急的線程,,其優(yōu)先級(jí)就較高,相反則較低。在線程排隊(duì)時(shí),優(yōu)先級(jí)高的線程可以排在較前的位置,能優(yōu)先享用到處理器資源,對(duì)于優(yōu)先級(jí)相同的線程。則遵循隊(duì)列的“先進(jìn)先出”的原則。12.1多線程設(shè)置優(yōu)先級(jí)的語(yǔ)句為:
Threadt1=newThread();t1.setPriority(5);Thread類(lèi)還定義了3個(gè)常數(shù),來(lái)表示線程優(yōu)先級(jí)。
MAX_PRIORITY:最高優(yōu)先級(jí)(值為10)。
MIN_PRIORITY:最低優(yōu)先級(jí)(值為1)。
NORM_PRIORITY:默認(rèn)優(yōu)先級(jí)(值為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多線程張三正在睡覺(jué),不聽(tīng)課上課!上課!上課!張三被老師叫醒了張三開(kāi)始聽(tīng)課[例12-4]銀行匯款12.1多線程sum=100sum=200sum=300sum=400sum=500sum=600網(wǎng)絡(luò)編程基本知識(shí)
1.網(wǎng)絡(luò)通信方式面向連接的通信方式指雙方通信前首先建立連接,然后在傳遞數(shù)據(jù),所有數(shù)據(jù)以包的形式按照一定的順序發(fā)送和接收,最后關(guān)閉連接。面向無(wú)連接的通信方式指雙方通信前不需要建立連接,雙方利用數(shù)據(jù)報(bào)來(lái)發(fā)送和接收相互獨(dú)立的數(shù)據(jù)包,是一種非可靠的無(wú)連接投遞報(bào)文的通信服務(wù)。12.2網(wǎng)絡(luò)編程2.通信協(xié)議TCP與UDP網(wǎng)絡(luò)上主機(jī)之間的應(yīng)用程序進(jìn)行通信時(shí)有兩個(gè)互不相同的傳輸協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報(bào)協(xié)議)。TCP是一種面向連接的保證可靠傳輸?shù)膮f(xié)議。UDP是一種無(wú)連接的協(xié)議,每個(gè)數(shù)據(jù)報(bào)都是一個(gè)獨(dú)立的信息,包括完整的源地址或目的地址。
12.2網(wǎng)絡(luò)編程3.通信連接當(dāng)采用TCP協(xié)議時(shí),通信雙方之間首先要建立連接,也就是兩者分別運(yùn)行不同的程序,由一端發(fā)出連接請(qǐng)求,另一端等候連接請(qǐng)求,當(dāng)?shù)群蚨耸盏秸?qǐng)求并接受請(qǐng)求后,兩個(gè)程序就建立起一個(gè)連接,之后通過(guò)該連接進(jìn)行數(shù)據(jù)交換。此時(shí)請(qǐng)求方稱為客戶端,接收方稱為服務(wù)端。這種通信機(jī)制稱為客戶/服務(wù)器(C/S)模式。12.2網(wǎng)絡(luò)編程
URL編程
1.URL的組成
URL的基本結(jié)構(gòu)由五部分組成:
<協(xié)議名>://<主機(jī)名>[:<端口號(hào)>][/<文件名>][#<引用>]12.2網(wǎng)絡(luò)編程2.創(chuàng)建一個(gè)URL
(1)publicURL(Stringspec);
(2)publicURL(URLcontext,Stringspec);
(3)publicURL(Stringprotocol,Stringhost,Stringfile);
(4)publicURL(Stringprotocol,Stringhost,intport,Stringfile);
12.2網(wǎng)絡(luò)編程3.解析URL
一個(gè)URL對(duì)象生成后,其屬性是不能被改變的,但是URL類(lèi)提供一些方法可以獲取這些屬性:publicStringgetProtocol()publicStringgetHost()
publicintgetPort()publicStringgetFile()12.2網(wǎng)絡(luò)編程4.通過(guò)URL訪問(wèn)網(wǎng)絡(luò)資源當(dāng)建立一個(gè)URL對(duì)象后,就可以通過(guò)它讀取指定的網(wǎng)絡(luò)資源。如果希望通過(guò)URL訪問(wèn)文本資源,可以使用URL的方法openStream(),其定義為:
InputStreamopenStream();WWW,F(xiàn)TP等標(biāo)準(zhǔn)化的網(wǎng)絡(luò)服務(wù)都是基于TCP協(xié)議的,所以本質(zhì)上講URL編程也是基于TCP的一種應(yīng)用。12.2網(wǎng)絡(luò)編程[例12-6]利用URL訪問(wèn)網(wǎng)站文件資源12.2網(wǎng)絡(luò)編程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>長(zhǎng)春工業(yè)大學(xué)ChangChunUniversityOfTechnology當(dāng)前在線:237</title><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/><!--頁(yè)面設(shè)計(jì):JOBO,后期加工:苦蟬,模版編輯:跨平臺(tái)-->……StreamClosedSocket通信
Socket通信是以TCP為通信協(xié)議的一種面向連接的通信方式。Socket被稱為套接字,用于描述網(wǎng)絡(luò)的IP地址和端口,Java應(yīng)用程序通過(guò)套接字向網(wǎng)絡(luò)發(fā)出請(qǐng)求,或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求來(lái)建立相互間的通信。12.2網(wǎng)絡(luò)編程1.Socket通信模式網(wǎng)絡(luò)應(yīng)用程序通常采用客戶/服務(wù)器(C/S)模式,通過(guò)Socket進(jìn)行C/S程序設(shè)計(jì)的一般連接過(guò)程是這樣的:服務(wù)器端(Server)監(jiān)聽(tīng)某個(gè)端口是否有連接請(qǐng)求,客戶端(Client)向服務(wù)器端發(fā)出連接請(qǐng)求,服務(wù)器端向客戶端發(fā)回接受消息。一個(gè)連接就建立起來(lái),此后,服務(wù)器端和客戶就可以與對(duì)方進(jìn)行通信了。12.2網(wǎng)絡(luò)編程
在選擇端口時(shí),必須小心。每一個(gè)端口提供一種特定的服務(wù),只有給出正確的端口,才能獲得相應(yīng)的服務(wù)。端口號(hào)時(shí),最好選擇一個(gè)大于1023的數(shù)以防止發(fā)生沖突。0~1023的端口號(hào)為系統(tǒng)所保留,例如http服務(wù)的端口號(hào)為80,telnet服務(wù)的端口號(hào)為21,ftp服務(wù)的端口號(hào)為23,所以在選擇在創(chuàng)建socket時(shí)如果發(fā)生錯(cuò)誤,將產(chǎn)生IOException,在程序中必須對(duì)之作出處理。所以在創(chuàng)建Socket或ServerSocket是必須捕獲或拋出例外。12.2網(wǎng)絡(luò)編程[例12-6]利用Socket建立通信連接,設(shè)計(jì)C/S結(jié)構(gòu)應(yīng)用程序
程序運(yùn)行時(shí)應(yīng)首先啟動(dòng)服務(wù)端程序,然后再運(yùn)行客戶端;如果希望在兩個(gè)主機(jī)上運(yùn)行該程序,需要修改客戶端程序中創(chuàng)建Socket對(duì)象時(shí)的服務(wù)器地址參數(shù)。12.2網(wǎng)絡(luò)編程數(shù)據(jù)報(bào)通信數(shù)據(jù)報(bào)通信是以UDP為通信協(xié)議的一種無(wú)連接的通信方式。數(shù)據(jù)報(bào)又稱為UDP套接字,它無(wú)需建立、拆除連接,而是直接將信息打包傳向指定的目的地,使用簡(jiǎn)單,占用系統(tǒng)資源少,適合于非實(shí)時(shí)的通信。12.2網(wǎng)絡(luò)編程1.DatagramSocket類(lèi)和DatagramPacket類(lèi)(1)DatagramSocket類(lèi)
DatagramSocket()
DatagramSocket(intprot)
DatagramSocket(intport,InetAddressladdr)
上述的三個(gè)構(gòu)造方法都聲明拋棄非運(yùn)行時(shí)例外SocketException,程序中必須進(jìn)行處理,或者捕獲、或者聲明拋棄。12.2網(wǎng)絡(luò)編程(2)DatagramSocket類(lèi)
DatagramPacket(bytebuf[],intlength)
DatagramPacket(bytebuf[],intlength,InetAddressaddr,intport)DatagramPacket(byte[]buf,intoffset,intlength)DatagramPacket(byte[]buf,intoffset,intlength,InetAddressaddress,intport)
12.2網(wǎng)絡(luò)編程
第一種和第三種構(gòu)造方法用來(lái)創(chuàng)建接收數(shù)據(jù)的對(duì)象,然后調(diào)用DatagramSocket的方法receive()等待數(shù)據(jù)報(bào)的到來(lái),receive()將一直等待,直到收到一個(gè)數(shù)據(jù)報(bào)為止。例如:
DatagramPacketpacket=newDatagramPacket(buf,256);
Socket.receive(packet);
12.2網(wǎng)絡(luò)編程
第二種和第三種構(gòu)造方法用來(lái)創(chuàng)建發(fā)送數(shù)據(jù)報(bào)給遠(yuǎn)程節(jié)點(diǎn)的對(duì)象,發(fā)送數(shù)據(jù)是通過(guò)DatagramSocket的方法send()實(shí)現(xiàn)的,send()根據(jù)數(shù)據(jù)報(bào)的目的地址來(lái)尋徑,以傳遞數(shù)據(jù)報(bào)。例如:
DatagramPacketpacket=newDatagramPacket(buf,length,address,port);
Socket.send(packet);12.2網(wǎng)絡(luò)編程[例12-7]利用數(shù)據(jù)報(bào)通信模式,建立應(yīng)用程序的無(wú)連接通信。
12.2網(wǎng)絡(luò)編程客戶端運(yùn)行情況:輸入發(fā)送的信息:你好,服務(wù)端請(qǐng)接受數(shù)據(jù)報(bào)!客戶端發(fā)送數(shù)據(jù)報(bào)完畢!
客戶端接收返回的數(shù)據(jù)報(bào)!服務(wù)端運(yùn)行情況:服務(wù)器收到數(shù)據(jù)報(bào)!
多媒體指?jìng)鬟f信息的載體,如數(shù)字、文字、聲音、圖形、圖像等等,多媒體技術(shù)的應(yīng)用使得計(jì)算機(jī)軟件變得豐富多彩、趣味盎然。JMF是Java語(yǔ)言的一個(gè)用于多媒體處理的擴(kuò)展應(yīng)用開(kāi)發(fā)包,其集成了多種媒體的采集、播放、傳輸?shù)忍幚?,?yīng)用JMF開(kāi)發(fā)包可以大大簡(jiǎn)化多媒體編程。12.3多媒體編程JMF功能以下是JMF支持的功能:1.播放各種媒體文件,如AU、AVI、MIDI、WAV等;2.播放從互聯(lián)網(wǎng)上下載的媒體流;3.利用麥克風(fēng)和攝像機(jī)一類(lèi)的設(shè)備截取音頻和視頻,并保存為多媒體文件;4.處理多媒體文件,轉(zhuǎn)換文件格式;5.向互聯(lián)網(wǎng)上傳音頻和視頻數(shù)據(jù)流;6.在互聯(lián)網(wǎng)上廣播音頻和視頻數(shù)據(jù)。12.3多媒體編程JMF的結(jié)構(gòu)1.數(shù)據(jù)源2.截取設(shè)備
3.播放器
4.處理器
5.數(shù)據(jù)格式
6.管理器12.3多媒體編程JMF的媒體播放器媒體播放器是JMF的一個(gè)基本功能,視頻、音頻等多媒體都需要它的支持才能實(shí)現(xiàn)播放,媒體播放器的應(yīng)用接口包括一個(gè)可視組件和一個(gè)控制面板組件,開(kāi)發(fā)者可以使用默認(rèn)的控制面板,也可以自行設(shè)計(jì)一個(gè)專(zhuān)用的用戶界面。12.3多媒體編程1.準(zhǔn)備啟動(dòng)播放器媒體播放器不能立即啟動(dòng),因?yàn)閱?dòng)之前需要滿足一些軟硬件的要求。例如,如果媒體播放器從未啟動(dòng)過(guò),就需要為其存儲(chǔ)媒體數(shù)據(jù)流分配內(nèi)存緩沖區(qū)。在準(zhǔn)備啟動(dòng)過(guò)程中,首先調(diào)用realize()方法,使媒體播放器進(jìn)入Realizing狀態(tài),然后在調(diào)用prefetch()方法,使媒體播放器進(jìn)入Prefetching狀態(tài),并開(kāi)始預(yù)取過(guò)程。12.3多媒體編程2.啟動(dòng)和停止播放器調(diào)用start()方法使媒體播放器進(jìn)入Started狀態(tài),如果調(diào)用了start()方法,而媒體播放器又沒(méi)有預(yù)取到數(shù)據(jù),則start()方法將執(zhí)行預(yù)取操作,在取到媒體數(shù)據(jù)后,媒體播放器進(jìn)入播放狀態(tài)(started狀態(tài))。12.3多媒體編程3.釋放媒體播放器資源當(dāng)媒體處于stopped狀態(tài)時(shí),可以調(diào)用deallocate()方法釋放其占用的獨(dú)占性資源,并盡量減少對(duì)非獨(dú)占性資源的使用。對(duì)處于Prefetching或Prefeched狀態(tài)的媒體播放器調(diào)用deallocate()方法將使其退回到Realized狀態(tài)。如果媒體播放器處于播放狀態(tài)時(shí)調(diào)用deallocate()方法將產(chǎn)生一個(gè)DeallocateEvent事件,并返回到Unrealized狀態(tài)。12
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年陜西省咸陽(yáng)市永壽縣蒿店中學(xué)中考一模地理試題(原卷版+解析版)
- 2.3 聲的利用 說(shuō)課稿2025年初中 人教版物理八年級(jí)上冊(cè)
- 新能源項(xiàng)目經(jīng)理應(yīng)聘簡(jiǎn)歷
- 思想?yún)R報(bào)心得體會(huì)
- 醫(yī)院項(xiàng)目需求回復(fù)函
- 2025年廣東省佛山市南海區(qū)中考一模英語(yǔ)試題(原卷版+解析版)
- 項(xiàng)目執(zhí)行階段成果匯報(bào)及后期規(guī)劃
- 住宅銷(xiāo)售代理合同
- 目前光伏發(fā)電產(chǎn)品主要用于哪些方面
- 基于大數(shù)據(jù)的農(nóng)業(yè)現(xiàn)代化種植模式優(yōu)化方案
- 幼兒園課件:《黑夜我不怕》
- 2024年-急診氣道管理共識(shí)課件
- 2024年江蘇食品藥品職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- 活動(dòng)招商合同
- 標(biāo)準(zhǔn)化法及相關(guān)知識(shí)課件
- 新視野大學(xué)英語(yǔ)(第四版)讀寫(xiě)教程1(思政智慧版)課件 Unit 6 Winning is not everything Section B
- 意識(shí)障礙診療規(guī)范2023版
- 儀表檢修規(guī)程
- 2023年10月自考03706思想道德修養(yǎng)與法律基礎(chǔ)試題及答案含評(píng)分標(biāo)準(zhǔn)
- 工廠組織架構(gòu)圖
- 全國(guó)IP地址段中國(guó)IP地址段各省IP段IP段最全
評(píng)論
0/150
提交評(píng)論