资源目录
压缩包内文档预览:(预览前20页/共45页)
编号:21836180
类型:共享资源
大小:21.32MB
格式:ZIP
上传时间:2019-09-06
上传人:QQ24****1780
认证信息
个人认证
王**(实名认证)
浙江
IP属地:浙江
25
积分
- 关 键 词:
-
大学
java
程序设计
教程
赵辉
课件
ppt
- 资源描述:
-
大学JAVA程序设计教程-赵辉-课件PPT,大学,java,程序设计,教程,赵辉,课件,ppt
- 内容简介:
-
第12章 Java高级编程,本章内容提要,多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况。Java 语言内置对多线程的支持,这是Java语言的重要特点之一。它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。,12.1 多线程,关于线程的几个术语 1程序 程序是一段静态代码,它是应用软件执行的蓝本。 2进程 进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个也是进程本身从产生、发展至消亡的过程。 3线程 线程与进程相似,是比进程更小的执行单位,线程是一段完成某个特定功能的代码。,12.1 多线程,4多线程 多线程是一种允许在程序中并发执行彼此间相互独立的多个线程的控制机制。多线程的执行是并发的,是逻辑上的“同时”,而不是物理上的“同时”。多个线程看似是同时执行,但事实上CPU只有一个,只能是轮流执行,线程不是真正的并行,只是并发。为了建立这些线程正在同步执行的感觉,Java快速地把控制从一个线程切换到另一个线程。,12.1 多线程,创建和使用线程 Java语言中包含了一个Thread类对多线程的概念提供支持。Thread类实现了Runnable接口,在Runnable接口中定义了run()方法,创建线程类就要实现run()方法。 其格式定义为: public void run( ) ,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 多线程,设置优先级的语句为: Thread t1=new Thread(); 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(int millsecond),12.1 多线程,(7)notify() (8)notifyAll() (9)isAlive() (10)currentThread() (11)getName(),例12-3 打断线程,12.1 多线程,张三正在睡觉,不听课 上课! 上课! 上课! 张三被老师叫醒了 张三开始听课,例12-4银行汇款,12.1 多线程,sum=100 sum=200 sum=300 sum=400 sum=500 sum=600,网络编程基本知识 1网络通信方式 面向连接的通信方式指双方通信前首先建立连接,然后在传递数据,所有数据以包的形式按照一定的顺序发送和接收,最后关闭连接。 面向无连接的通信方式指双方通信前不需要建立连接,双方利用数据报来发送和接收相互独立的数据包,是一种非可靠的无连接投递报文的通信服务。,12.2 网络编程,2通信协议TCP与UDP 网络上主机之间的应用程序进行通信时有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。 TCP是一种面向连接的保证可靠传输的协议。 UDP是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址。,12.2 网络编程,3通信连接 当采用TCP协议时,通信双方之间首先要建立连接,也就是两者分别运行不同的程序,由一端发出连接请求,另一端等候连接请求,当等候端收到请求并接受请求后,两个程序就建立起一个连接,之后通过该连接进行数据交换。此时请求方称为客户端,接收方称为服务端。这种通信机制称为客户/服务器(C/S)模式。,12.2 网络编程,URL编程 1URL的组成 URL的基本结构由五部分组成: :/:/#,12.2 网络编程,2创建一个URL (1)public URL (String spec); (2)public URL(URL context, String spec); (3)public URL(String protocol, String host, String file); (4)public URL(String protocol, String host, int port, String file);,12.2 网络编程,3解析URL 一个URL对象生成后,其属性是不能被改变的,但是URL类提供一些方法可以获取这些属性: public String getProtocol() public String getHost() public int getPort() public String getFile(),12.2 网络编程,4通过URL访问网络资源 当建立一个URL对象后,就可以通过它读取指定的网络资源。如果希望通过URL访问文本资源,可以使用URL的方法openStream(),其定义为: InputStream openStream(); WWW,FTP等标准化的网络服务都是基于TCP协议的,所以本质上讲URL编程也是基于TCP的一种应用。,12.2 网络编程,例12-6利用URL访问网站文件资源,12.2 网络编程,opening Stream 长春工业大学 ChangChun University Of Technology 当前在线: 237 Stream Closed,Socket通信 Socket通信是以TCP为通信协议的一种面向连接的通信方式。Socket被称为套接字,用于描述网络的IP地址和端口,Java应用程序通过套接字向网络发出请求,或者应答网络请求来建立相互间的通信。,12.2 网络编程,1Socket通信模式 网络应用程序通常采用客户/服务器(C/S)模式,通过Socket进行C/S程序设计的一般连接过程是这样的:服务器端(Server)监听某个端口是否有连接请求,客户端(Client)向服务器端发出连接请求,服务器端向客户端发回接受消息。一个连接就建立起来,此后,服务器端和客户就可以与对方进行通信了。,12.2 网络编程,在选择端口时,必须小心。每一个端口提供一种特定的服务,只有给出正确的端口,才能获得相应的服务。端口号时,最好选择一个大于1023的数以防止发生冲突。01023的端口号为系统所保留,例如http服务的端口号为80,telnet服务的端口号为21,ftp服务的端口号为23, 所以在选择在创建socket时如果发生错误,将产生IOException,在程序中必须对之作出处理。所以在创建Socket或ServerSocket是必须捕获或抛出例外。,12.2 网络编程,例12-6利用Socket建立通信连接,设计C/S结构应用程序 程序运行时应首先启动服务端程序,然后再运行客户端;如果希望在两个主机上运行该程序,需要修改客户端程序中创建Socket对象时的服务器地址参数。,12.2 网络编程,数据报通信 数据报通信是以UDP为通信协议的一种无连接的通信方式。数据报又称为UDP套接字,它无需建立、拆除连接,而是直接将信息打包传向指定的目的地,使用简单,占用系统资源少,适合于非实时的通信。,12.2 网络编程,1DatagramSocket类和DatagramPacket类 (1)DatagramSocket类 DatagramSocket() DatagramSocket(int prot) DatagramSocket(int port, InetAddress laddr) 上述的三个构造方法都声明抛弃非运行时例外SocketException,程序中必须进行处理,或者捕获、或者声明抛弃。,12.2 网络编程,(2)DatagramSocket类 DatagramPacket(byte buf,int length) DatagramPacket(byte buf, int length, InetAddress addr, int port) DatagramPacket(byte buf, int offset, int length) DatagramPacket(byte buf, int offset, int length,InetAddress address, int port),12.2 网络编程,第一种和第三种构造方法用来创建接收数据的对象, 然后调用DatagramSocket 的方法receive()等待数据报的到来,receive()将一直等待,直到收到一个数据报为止。 例如: DatagramPacket packet=new DatagramPacket(buf, 256); Socket.receive (packet);,12.2 网络编程,第二种和第三种构造方法用来创建发送数据报给远程节点的对象,发送数据是通过DatagramSocket的方法send()实现的,send()根据数据报的目的地址来寻径,以传递数据报。 例如: DatagramPacket packet=new DatagramPacket(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.3 多媒体编程,JMF的事件模型 JMF是利用一个结构
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。