第9章+Java的多线程机制与IO操作.ppt_第1页
第9章+Java的多线程机制与IO操作.ppt_第2页
第9章+Java的多线程机制与IO操作.ppt_第3页
第9章+Java的多线程机制与IO操作.ppt_第4页
第9章+Java的多线程机制与IO操作.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第9章Java的多线程机制与I/O操作,湖南科技大学计算机科学与技术系,2,主要内容,Java多线程机制 Java图形界面编程 Java文件操作,湖南科技大学计算机科学与技术系,3,9.1 多线程机制的含义,线程是一个程序中的一个执行流,多线程是指一个程序中包含有多个执行流。 线程和进程一样,都是实现并发操作的基本单位,线程和进程的差别主要体现在: 同为基本的执行单位,线程的划分比进程小; 进程占有独立的内存资源,而线程具有共享的“堆”独立的“栈”,线程可以利用“堆”来完成线程间的通信。 Web编程(如下载,HTTP服务等)要求具有多线程机制。,湖南科技大学计算机科学与技术系,4,9.2 多线

2、程机制的实现,Java提供了两种线程编程机制 继承Thread类方法常用于Java应用程序中 示例:CounterApplication.java 实现接口Runnable常用于Java applet程序中 示例:CounterApplet.java CounterApplet.html 运行:appletviewer CounterApplet.html 示例: MultiThread.java,湖南科技大学计算机科学与技术系,5,9.2 多线程机制的实现,线程竞争与同步 多个线程可能会存取同一实例变量,造成线程竞争。 解决办法是采取同步机制 通过synchronized实现资源同步 代码段

3、同步 格式如下: synchronized(someObject) /代码 方法同步 示例: CounterApplet1.java CounterApplet1.html,湖南科技大学计算机科学与技术系,6,9.3 Thread类,构造函数 public Thread() 常量 MAX_PRIORITY MIN_PRIORITY NORM_PRORITY 优先级110 方法 public final void setName(String name) public final void String getName( ) public static int activeCount( ) pu

4、blic native synchronized void start( ) public final void suspend( ),湖南科技大学计算机科学与技术系,7,9.4 线程的生命同期,线程生命周期中的状态转换图,湖南科技大学计算机科学与技术系,8,9.4 线程的生命同期,堵塞(blocked) sleep( )方法 suspend( )与resume( )方法 示例:ThreadTest2.java ThreadTest3.java wait( )与notify( )方法 示例:ThreadTest5.java ThreadTest4.java I/O堵塞 示例:MyClass1.

5、java,湖南科技大学计算机科学与技术系,9,9.5 创建用户界面,AWT(Abstract Window Toolkit) 是API为Java 程序提供的建立GUI工具集 AWT可用于Java的applet和applications中。 AWT支持图形用户界面编程的功能包括: 用户界面组件; 事件处理模型; 图形和图像工具; 布局管理器; 数据传送类。,湖南科技大学计算机科学与技术系,10,9.5 创建用户界面,java.awt包提供了的GUI设计工具。主要包括: 组件Component 组件是以图形化的方式显示在屏幕上并能与用户进行交互的对象,如按钮、标签等。组件不能独立地显示,必须放在一

6、定的容器中才可以显示出来。 类java.awt.Component是许多组件类的父类,Component类中封装了组件通用的方法和属性,如组件对象、大小、显示位置、前景色和背景色、边界、可见性等 容器Container 容器(Container)也是一个类,是Component的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件和容器。 常用的有Panel, Frame, Applet。 布局管理器LayoutManager 每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。 布局管理器主要包括:FlowLa

7、yout, BorderLayout,GridLayout, CardLayout, GridBagLayout,湖南科技大学计算机科学与技术系,11,9.5 创建用户界面,注意 1Frame是一个顶级窗口。Frame的缺省布局管理器为BorderLayout。 2Panel无法单独显示,必须添加到某个容器中。 Panel的缺省布局管理器为FlowLayout。 3当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器。因此,可以利用Panel使得BorderLayout中某个区域显示多个组件,达到设计复杂用户界面的目的 。 4如果采用无布局管理器setLayou

8、t(null),则必须使用setLocation(), setSize(), setBounds()等方法手工设置组件的大小和位置,此方法会导致平台相关,不鼓励使用。 示例: MyFrame.java,湖南科技大学计算机科学与技术系,12,9.5 创建用户界面,AWT事件处理模型 要能够让图形界面接收用户的操作,就必须给各个组件加上事件处理机制。 在事件处理的过程中,主要涉及三类对象: Event事件,用户对界面操作的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。 Event Source事件源,事件发生的场所,通常就是各个组件,例如按钮Button。 Event hand

9、ler事件处理者,接收事件对象并对其进行处理的对象。,湖南科技大学计算机科学与技术系,13,9.5 创建用户界面,AWT事件处理模型 Java采取了授权处理机制 事件源可以把在其自身所有可能发生的事件分别授权给不同的事件处理者来处理 事件处理者(监听器)通常是一个类,该类如果要能够处理某种类型的事件,就必须实现与该事件类型相对的接口。 将事件源对象和事件处理器分开 使用授权处理模型进行事件处理的一般方法 1对于某种类型的事件XXXEvent,,要想接收并处理这类事件,必须定义相应的事件监听器类,该类需要实现与该事件相对应的接口XXXListener; 2事件源实例化以后,必须进行授权,注册该类

10、事件的监听器,使用addXXXListener(XXXListener ) 方法来注册监听器。 示例:MyEventHandle.java,湖南科技大学计算机科学与技术系,14,9.5 创建用户界面,AWT采用了与特定平台相关的实现,图形用户接口欠佳 Java基础类( JFC )Swing是第二代GUI开发工具集,与AWT的重量级组件不同,Swing中大部分是轻量级组件 Swing是构筑在AWT上层的一组GUI组件的集合,为了保证可移植性,它完全用Java语言编写 Swing提供了更完整的组件,引入了许多新的特性和能力 Swing提供了更多的组件库,如: JTable , JTree , Jc

11、ombox Swing增强了AWT中组件的功能 JComponent类是Swing组件的基类,而JComponent继承自 Container类,因此,所有的Swing组件都是AWT的容器 Swing采用了MVC设计模式 示例:SwingUI.java,湖南科技大学计算机科学与技术系,15,9.6 应用程序对文件的访问,JAVA的输入输出是以流(Stream)来方式来处理的 流是在计算机输入、输出操作中流动的数据序列 java.io包中包括许多类提供许多有关文件的各个方面操作,其中File类主要用于文件操作 利用构造函数File(string path, string filename) 等创

12、建出File 对象; 利用canRead() 、canWrite()、 getParent()、 getPath()、 isDirectory()等成员函数实现对文件的各个属性的操作。 在文件读写的编程过程中主要应该注意异常处理 示例:FileTest.java,湖南科技大学计算机科学与技术系,16,9.6 应用程序对文件的访问,输入输出抽象基类InputStream/OutputStream 实现文件内容操作的基本功能函数read()、 write()、close()、skip()等 一般都是创建出其派生类对象(完成指定的特殊功能)来实现文件读写 FileInputStream/FileOutputStream 用于本地文件读写(二进制格式读写并且是顺序读写,读和写要分别创建出不同的文件流对象); 本地文件读写编程的基本过程为: 生成文件流对象(对文件读操作时应该为FileInputStream类,而文件写应该为FileOutputStream类); 调用FileInputStream或FileOutputStream类中的功能函数如read()、write(int b)等)读写文件内容; 关闭文件(clo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论