您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > JAVA教程第7章(多任务程序设计)
第八章多任务程序设计内容提要◆线程的定义、状态◆线程的创建◆单线程和多线程假日,三五好友聚集在酒吧,一边天南地北地闲聊,一边欣赏音乐,享受美食,其乐融融。人在同一时间可以做许多事,如上面情景中所描述的,吃、聊、听哪个都不耽误。为什么人可以这样呢?其实,是由于人脑通过某种方式,很好地处理了同时来自多方面的要求,指挥身体的各个器官做相应地动作。计算机是否能像人一样一脑同时多用呢?回答是肯定的。当用户在计算机上看VCD时,可以同时看到画面、听到对话和音乐。当用户处理文档时,可以播放音乐,还可以同时运行病毒监控软件、打印文件……计算机能做到这一点,是因为通过软件对处理文件、播放音乐、运行其它应用程序各分配一个线程,就可以同时完成多个任务的执行。引子知识要点线程的概念线程的五种状态:新建、就绪、运行、阻塞、死亡两种创建线程的方法:创建Thread的子类、利用Runnable接口单线程和多线程的实现任务1实现产品信息处理界面的动态显示问题分析知识学习线程概念创建单线程创建多线程任务实施执行效果问题分析任务描述:仓管系统中,查询产品信息的同时,在界面的状态栏显示系统日期,在左上角显示动态欢迎信息。步骤分析:线程概念和线程机制分析问题中包含几个线程,以及各个线程相关知识日期类应用动态效果的实现方法编写代码及编译执行先来两个例子:例1:利用Windows系统中的DOS命令模式执行应用程序时,首先要进入该应用程序所在的目录,然后键入命令及应用程序的名字,按Enter执行程序。此时,若需要执行另一个程序,必须等第一个程序退出后,才能执行第二个程序。例2:Windows系统中,可以在进行文字处理的同时,欣赏到美妙的音乐;当用户运行一个精美的Flash动画时,不仅可感受到图像、音响给用户带来的愉悦,可能还会看到一些人物对话的文字信息……上面的例子说明了什么?知识学习——进程与线程进程1进程2内存空间线程1线程2线程1线程2线程3知识学习——进程与线程知识学习——单线程和多线程线程:将一个程序转换成多个独立运行的子任务。这样的每个子任务都叫作一个“线程”(Thread)单线程:java的一个独立程序的每一次运行称为java单进程类或者类其中的某些方法或者代码块只能“同时”被一个线程执行。当有多个线程同时执行到此处时,只有当正在执行的线程运行完毕,释放锁之后,其它线程才可以继续执行。多线程:与单线程比较而言,同一实例中有多个线程”同时”运行知识学习——线程的五种状态新建阻塞运行就绪死亡知识学习——两种创建线程的方式利用Thread创建线程创建一个Thread的子类重写Thread的run()方法,实现内容即为程序将实现的功能案例SimpleThread.javaTimePrinter.java知识学习——两种创建线程的方式利用Runnable接口实现如果需要既可扩展自某个其它类,又能运行于自己的线程之中,则使用Runnable接口实现方法:先创建一个实现Runnable接口的类,并实现其中的run()方法案例SimpleThread_2.javaTimePrinter_2.java采用两种创建线程的方法,编写一个程序,实现在applet上,依次显示三次“IloveJava”信息,每次间隔为2000毫秒。问题:若仓库系统案例中,直接调用run()方法,而不调用start()方法,产品信息处理与动态显示内容是否还是两个线程?动手练习40分钟日期相关类:Date、Calendar和DateFormatDate()方法主要用于创建日期对象并获取日期;Calendar()方法主要用于获取和设置日期;DateFormat()方法主要用于创建日期格式化器,然后再由格式化器将日期转换为各种日期格式串输出。JAVA语言规定的基准日期为格林尼治标准时间1970.1.1.00:00:00,当前日期是由基准日期开始所经历的毫秒数转换出来的。DateFomat类在java.text包中,Date和Calendar类在java.util包中。知识学习——日期案例DateDemo.java动画是基于循环序列的,通过序列的不断重复,可产生动画的效果。序列中的每一幅画面(包括图像和文本)称为一帧。通常,动画序列是每秒显示5-25帧。知识学习——动态效果任务实施根据线程的概念,问题中的查询处理是一个线程,而显示系统时间和动态欢迎信息是另一个线程。关键问题线程的创建理解日期类字体的设置动画的处理编码实现案例ProductThread.java仓管系统中,需要在供应商查询界面的右上角显示一个系统标志图片,并具有闪烁效果。动手练习30分钟例子://java代码importjava.awt.*;importjavax.swing.*;publicclassHelloAppletextendsJApplet{publicvoidpaint(Graphicsg){g.drawString(大家好!!,20,20);}}//html代码appletcode=”HelloApplet.class”width=200height=60/applet扩展1——JApplet在JApplet启动后,在窗体中显示一个9*9乘法表,效果如下:124369………动手练习40分钟•进程是程序的一次动态执行过程,进程的生命周期包括产生、发展和消亡三个阶段。•线程是一个比进程更小的可执行单位,与进程相同,它也有产生、发展和消亡三个阶段。•一个进程中在执行过程中,可以产生一个或多个线程,但这些线程共享同一个内存空间。•线程又分为单线程和多线程。一个进程中仅有一个线程称为单线程。若一个进程中有多于一个线程时,则称为多线程。单线程应用程序在某一时刻仅能执行一个任务,而多线程可在一个进程中同时运行,执行不同的任务,而且能相互影响。•Java具有支持内置线程的特性。Java程序的主要结构是多线程。•在线程生命周期里,有五个状态:新建、就绪、运行、阻塞和死亡。•创建线程有两种方法:小结•通过扩展Thread类,实现应用程序和类运行于一个单独的线程中。•当应用程序需要从Thread类以外的类继承时,就应实现Runnable接口。•java.util.Date类封装了系统时期。•java.util.Calendar类获取系统日期,支持世界大多数地区的标准日历。•java.text.DateFormat类可设置日期时间格式。•动画是基于循环序列的,通过序列的不断重复,可产生动画的效果。序列中的每一幅画面(包括图像和文本)称为一帧。•为了避免出现多个线程间对资源访问的冲突,Java提供了内建机制以防止冲突出现,即为特定的方法设为synchronized(同步的)。收集是其中包含有一组对象的对象。Java技术支持Vector(向量)、LinkedList、Bits、Stack、Hashtable等收集类。Vector类允许你创建包含多个对象的动态数组,提供追加、删除、插入元素的方法。
本文标题:JAVA教程第7章(多任务程序设计)
链接地址:https://www.777doc.com/doc-4484170 .html