Java的多线程机制与IO操作.ppt

上传人:牧羊曲112 文档编号:6509903 上传时间:2023-11-07 格式:PPT 页数:18 大小:328.99KB
返回 下载 相关 举报
Java的多线程机制与IO操作.ppt_第1页
第1页 / 共18页
Java的多线程机制与IO操作.ppt_第2页
第2页 / 共18页
Java的多线程机制与IO操作.ppt_第3页
第3页 / 共18页
Java的多线程机制与IO操作.ppt_第4页
第4页 / 共18页
Java的多线程机制与IO操作.ppt_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《Java的多线程机制与IO操作.ppt》由会员分享,可在线阅读,更多相关《Java的多线程机制与IO操作.ppt(18页珍藏版)》请在三一办公上搜索。

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

2、rApplication.java实现接口Runnable常用于Java applet程序中示例:CounterApplet.java CounterApplet.html运行:appletviewer CounterApplet.html示例:MultiThread.java,5,9.2 多线程机制的实现,线程竞争与同步多个线程可能会存取同一实例变量,造成线程竞争。解决办法是采取同步机制通过synchronized实现资源同步代码段同步格式如下:synchronized(someObject)/代码 方法同步示例:CounterApplet1.java CounterApplet1.html

3、,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()public native synchronized void start()public final void suspend(),7,9.4 线程的生命同期,线程生命周期中的状态转换图,8,9.4 线程的生命同期,堵塞(blo

4、cked)sleep()方法suspend()与resume()方法示例:ThreadTest2.java ThreadTest3.javawait()与notify()方法示例:ThreadTest5.java ThreadTest4.javaI/O堵塞示例:MyClass1.java,9,9.5 创建用户界面,AWT(Abstract Window Toolkit)是API为Java 程序提供的建立GUI工具集AWT可用于Java的applet和applications中。AWT支持图形用户界面编程的功能包括:用户界面组件;事件处理模型;图形和图像工具;布局管理器;数据传送类。,10,9.

5、5 创建用户界面,java.awt包提供了的GUI设计工具。主要包括:组件Component组件是以图形化的方式显示在屏幕上并能与用户进行交互的对象,如按钮、标签等。组件不能独立地显示,必须放在一定的容器中才可以显示出来。类是许多组件类的父类,Component类中封装了组件通用的方法和属性,如组件对象、大小、显示位置、前景色和背景色、边界、可见性等容器Container容器(Container)也是一个类,是Component的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件和容器。常用的有Panel,Frame,Applet。布局管理器LayoutMana

6、ger每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。布局管理器主要包括:FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout,11,9.5 创建用户界面,注意1Frame是一个顶级窗口。Frame的缺省布局管理器为BorderLayout。2Panel无法单独显示,必须添加到某个容器中。Panel的缺省布局管理器为FlowLayout。3当把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器。因此,可以利用Panel使得BorderLayou

7、t中某个区域显示多个组件,达到设计复杂用户界面的目的。4如果采用无布局管理器setLayout(null),则必须使用setLocation(),setSize(),setBounds()等方法手工设置组件的大小和位置,此方法会导致平台相关,不鼓励使用。示例:MyFrame.java,12,9.5 创建用户界面,AWT事件处理模型要能够让图形界面接收用户的操作,就必须给各个组件加上事件处理机制。在事件处理的过程中,主要涉及三类对象:Event事件,用户对界面操作的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。Event Source事件源,事件发生的场所,通常就是各个组件,

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

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

10、nent类是Swing组件的基类,而JComponent继承自 Container类,因此,所有的Swing组件都是AWT的容器 Swing采用了MVC设计模式示例:SwingUI.java,15,9.6 应用程序对文件的访问,JAVA的输入输出是以流(Stream)来方式来处理的流是在计算机输入、输出操作中流动的数据序列java.io包中包括许多类提供许多有关文件的各个方面操作,其中File类主要用于文件操作利用构造函数File(string path,string filename)等创建出File 对象;利用canRead()、canWrite()、getParent()、getPath

11、()、isDirectory()等成员函数实现对文件的各个属性的操作。在文件读写的编程过程中主要应该注意异常处理示例:FileTest.java,16,9.6 应用程序对文件的访问,输入输出抽象基类InputStream/OutputStream 实现文件内容操作的基本功能函数read()、write()、close()、skip()等一般都是创建出其派生类对象(完成指定的特殊功能)来实现文件读写FileInputStream/FileOutputStream用于本地文件读写(二进制格式读写并且是顺序读写,读和写要分别创建出不同的文件流对象);本地文件读写编程的基本过程为:生成文件流对象(对文件读操作时应该为FileInputStream类,而文件写应该为FileOutputStream类);调用FileInputStream或FileOutputStream类中的功能函数如read()、write(int b)等)读写文件内容;关闭文件(close())。示例:FileIO.java,17,小结,Java多线程机制Java图形界面设计Java输入/输出操作,18,课后练习,比较线程与进程的异同?Java的两种线程编程机制是怎样实现的?画出线程状态转换图。编程利用线程同时显示三个时钟。建立文件,并写入一首唐诗,然后显示文件内容。要求用图形用户界面输入与输出。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号