Java程序设计任务驱动式教程 任务二十七 java的分身术(创建和启动线程)课件

上传人:我*** 文档编号:142099000 上传时间:2020-08-16 格式:PPT 页数:18 大小:697.50KB
返回 下载 相关 举报
Java程序设计任务驱动式教程 任务二十七 java的分身术(创建和启动线程)课件_第1页
第1页 / 共18页
Java程序设计任务驱动式教程 任务二十七 java的分身术(创建和启动线程)课件_第2页
第2页 / 共18页
Java程序设计任务驱动式教程 任务二十七 java的分身术(创建和启动线程)课件_第3页
第3页 / 共18页
Java程序设计任务驱动式教程 任务二十七 java的分身术(创建和启动线程)课件_第4页
第4页 / 共18页
Java程序设计任务驱动式教程 任务二十七 java的分身术(创建和启动线程)课件_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《Java程序设计任务驱动式教程 任务二十七 java的分身术(创建和启动线程)课件》由会员分享,可在线阅读,更多相关《Java程序设计任务驱动式教程 任务二十七 java的分身术(创建和启动线程)课件(18页珍藏版)》请在金锄头文库上搜索。

1、,Java程序设计任务驱动式教程,主编:孙修东、王永红 高职高专规划示范教材,北京航空航天大学出版社,2,目录,任务一 搭建环境(构建Java集成开发环境),任务二 Java欢迎你(开发简单Java应用程序,任务三 小试牛刀(学习Java语言基础),任务四 挑战选择(使用分支控制流程),任务五 游戏人生(使用循环控制流程),任务六 回归自然(创建、使用类和对象),任务七 3G时代的消息传递(定义和使用类方法),任务八 保护你的隐私(封装的使用),任务九 子承父业(继承和多态的使用),任务十 上帝万能之手(接口的使用),3,任务十一 用数组存储信息(使用数组),任务十二 使用字符串进行交流(使用

2、字符串),任务十三 防患于未然(捕获并处理异常),任务十四 主动出击(抛出异常),任务十五 认识Java Applet(Applet入门),任务十六 丰富多彩的Applet(在Applet中播放声音和显示图像),任务十七 进入Windows世界(设计图形用户界面),任务十八 布局规划(使用布局管理器),任务十九 事件委托处理(如何处理事件),任务二十 选择之道(使用选择控件和选择事件),目录,4,任务二十一 简明清晰的菜单(使用菜单和其他常用事件),任务二十二 访问数据(使用JDBC连接数据库),任务二十三 访问数据升级(数据库编程),任务二十四 文件管理(目录与文件管理),任务二十五 顺序进

3、出之道(文件的顺序访问),任务二十六 随机进出之道(文件的随机访问),任务二十七 JAVA的分身术(创建和启动线程),任务二十八 线程的生命周期与优先级(线程的状态与调度),任务二十九 基于连接的通信(Java中的套接字Socket),任务三十 基于无连接的通信(Java中的数据报编程),目录,5,任务二十七 JAVA的分身术(创建和启动线程),2,1,知识目标,能力目标,Thread类;Calendar类;SimpleDateFormat类。,会使用Thread类创建一个多线程应用程序;能使用Calendar类获取当前日期、时间和星期;能使用SimpleDateFormat类来格式化日期和时

4、间。,6,内容提要,4,跟我做:电子时钟,1,2,3,5,实现方案,代码分析,必备知识,动手做一做,7,27.1 跟我做:电子时钟,任务情景 运用Java多线程技术编写一个电子时钟的应用程序Clock,运行程序时会显示系统的当前日期和时间,并且每隔1秒后会自动刷新显示当前日期和时间。 运行结果,第1章目录,8,27.2 实现方案,问题分析 本任务是创建一个Java多线程应用程序,使用Canvas类来创建一个画板,使用Graphics类在画板中绘制出系统当前日期和当前时间,使用Thread类创建一个线程。并重写线程中的run方法来实现每隔一秒钟刷新显示系统的的当前日期和当前时间。 解决步骤 1.

5、打开Eclipse,在study项目中创建包com.task27,再确定类名Clock,得到类的框架。 2.在public class Clock 下面一行创建对象和输入类的属性描述: 3.在Clock类中的paint()方法中使用Graphics类的drawString方法显示系统的当前日期和时间。 4.定义ClockThread线程类,在ClockThread线程类中的run方法中循环调用repaint()方法来刷新显示系统的当前日期和时间。,第1章目录,9,程序代码 package com.task27; /创建包com.task27 /* * Clock.java * 电子时钟的实现

6、*/ import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.sql.Date; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.swing.JFrame; import javax.swing.JPanel; class Clock extends Canvas private

7、 static final long serialVersionUID = 3660124045489727166L; JFrame frame=new JFrame(); JPanel conPane; String time; int i=0; Date timer; public Clock() conPane=(JPanel)frame.getContentPane(); conPane.setLayout(new BorderLayout(); conPane.setSize(280,40); conPane.setBackground(Color.white); conPane.a

8、dd(this,BorderLayout.CENTER); frame.setVisible(true); frame.setSize(300, 150); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public void paint(Graphics g) Font f=new Font(宋体,Font.BOLD,16); SimpleDateFormat SDF=new SimpleDateFormat(yyyy年MM月dd日HH:mm:ss);/格式化时间显示类型 Calendar now=Calendar.getInst

9、ance(); time=SDF.format(now.getTime();/得到当前日期和时间 g.setFont(f); g.setColor(Color.orange); g.drawString(time,45,25); ,27.3 代码分析,10,public static void main(String args) Thread ClockThread= new ClockThread(); ClockThread.start(); class ClockThread extends Thread Clock t=new Clock(); public void run() wh

10、ile(true) try Thread.sleep(1000); /休眠1秒钟 catch(InterruptedException e) System.out.println(异常); t.repaint(100); ,27.3 代码分析,11,应用扩展 在电子时钟中可以加入星期的显示功能,上述代码部分修改如下: public void paint(Graphics g) Font f=new Font(宋体,Font.BOLD,16); SimpleDateFormat SDF=new SimpleDateFormat(yyyy年MM月dd日HH:mm:ss);/格式化时间显示类型 Ca

11、lendar now=Calendar.getInstance(); time=SDF.format(now.getTime(); /得到当前日期和时间 g.setFont(f); g.setColor(Color.orange); g.drawString(time,45,25); /以下为计算星期的代码 dayOfWeek = now.get(Calendar.DAY_OF_WEEK); switch (dayOfWeek) case 1: g.drawString(星期日,120,60); break; case 2: g.drawString(星期一,120,60); break; c

12、ase 3: g.drawString(星期二,120,60); break; case 4: g.drawString(星期三,120,60); break; case 5: g.drawString(星期四,120,60); break; case 6: g.drawString(星期五,120,60); break; case 7: g.drawString(星期六,120,60); break; ,27.3 代码分析,12,修改代码后,重新运行程序,运行结果程序运行的结果如图27-2所示。,27.3 代码分析,13,27.4 必备知识,27.4.1 线程 在讲解线程之前,先了解一下什么

13、是进程,简单地说,在多任务操作系统中,每个独立执行的程序称为进程,我们现在使用的操作系统一般都是多任的,即能够同时执行多个应用程序,如我们使用最多的是Windows、Linux、Unix操作系统。操作系统负责CPU等设备资源进行分配和管理,虽然这些设备同一时刻只能被一个应用程序使用,但以非常小的时间间隔交替执行多个程序,就可以给人以同时执行多个程序的感觉。例如,我们可以同时运行两个WORD应用程序。 线程是比进程更小的执行单位。一个进程在其执行过程中可以产生多个线程,每一个线程就是一个程序内部的一条执行线索,这些线程可以交替运行。 多任务与多线程是两个不同的概念。前者是针对操作系统而言的,表示

14、操作系统可以同时运行多个应用程序;后者是针对一个程序而言的,表示在一个程序内部可以同时执行多个线程。 创建多线程有两种方法:继承Thread类和实现Runnable接口。在下面的小节里,将分别详细讲解。,第1章目录,14,27.4.2 用Thread类创建线程 一个Thread类的一个实例对象就是Java程序的一个线程,所以Thread类的子类的实例对象也是Java程序的一个线程。因此构造Java程序可以通过构造类Thread的子类的实例对象来实现。构造类Thread的子类主要目的是为了让线程类的实例对象能够完成线程程序所需要的功能。 通过这种方法构造出来的线程在程序执行时的代码被封装在类Th

15、read或其子类的成员方法run中。为了使新构造出来的线程能完成所需要的功能。新构造出来的线程类应覆盖Thread类的成员方法run()。 线程的启动或运行并不是调用成员方法run()。而是调用成员方法start()达到间接调run()方法,线程的运行实际上就是执行线程的成员方法run()。 例如,通过继承Thread类创建线程,在主控程序中同时运行两个线程。输出奇数和偶数。,第1章目录,27.4 必备知识,15,27.4 必备知识,package com.task27; public class Thread1 extends Thread int i=0; public Thread1(S

16、tring name,int i) super(name); this.i=i; public void run() int j=i; System.out.println( ); System.out.print(getName()+:); while(j=20) System.out.print(j+ ); j+=2; public static void main(String args) Thread1 t1=new Thread1(Thread1,1); Thread1 t2=new Thread1(Thread2,2); t1.start(); t2.start(); System.out.println(活动线程个数为:+activeCount

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号