湖南科技职业学院软件职业技术学院 教师课时授课计划 教师姓名: 授课班级: 授课课时:8 课程名称:JAVA程序设计 第 7 课 教学循环号:5-2 课题 线程概念  各教学环节课时分配 讲授  4 课时   有指导的实践  2 课时   独立实践  2 课时  教学内容 了解线程的概念 了解多线程的概念 3、学会使用线程类 4、学会使用时间类调用系统时间 5、学会使用日期类调用系统日期 6、学会使用线程实时显示时间  重点 了解多线程的概念  难点 学会使用线程类  教具 多媒体  作业 独立实践  授课日期 (校历) 第 4 周星期 1 第 3-4 节   第 4 周星期 2 第 5-8 节   第 4 周星期 3 第 1-2 节   第 周星期 第 节  课后小结 通过本课的学习,学生掌握了: 线程的概念 2、利用线程类编程实现线程的应用  详细教学过程附后 详细教学过程: 一、教学目标陈述(5分钟) 定义线程和多线程的概念 识别Thread, Date, Calendar, 及 GregorianCalendar 类的函数和语法及操纵它们的方法 在applet上显示当前的日期和时间 二、JAVA中的线程的概念(45分钟) 1、线程的定义: 进程分为几个任务。每个任务又可分为更小的称为线程的单元 线程可定义为程序内控制的单顺序流 每个程序至少有一个线程称为主线程 微处理器为你执行的进程分配内存。每个进程占有它自己的地址空间(内存) 进程中所有线程共享同一个地址空间 2、多线程的定义 只有一条线程的进程称为单线程 有不止一个线程的进程称为多线程进程中多个线程可同时运行,执行不同的任务和彼此交互。 Java 对线程有内部支持Java体系结构的主要部分是多线程的。 三、实例分析 7.D.1(45*3分钟) 1、问题的陈述 把一个附加的性质加入到Customer 材料 applet。当前的日期和时间必须在applet的状态栏上显示。写出此代码。 2、确定任务 识别显示日期和时间要用的机制 识别显示日期和时间的位置 识别表示对象、存储日期、时间、及要显示消息的变量 识别线程应睡眠的持续时间 识别引发的异常和错误消息 识别数据和时间格式 编写合并日期和时间信息的代码 保存、编译、及执行程序 验证程序是否正确地编码 3、分析解决问题 识别显示日期和时间要用的机制 Thread 类: 用 java.lang.Thread 类来构造和访问多线程应用中各个线程 通过扩展Thread类,你可使你的应用和类在单独的线程中运行 语法: public class <类_名> extends Thread Runnable 接口: 当程序需要继承除了Thread 类之外的另一个类时,你需实现Runnable接口 Runnable接口由单个方法run()组成,它在线程激活时执行 实现Runnable接口的语法 public class <类_名> extends <超类_名> implements Runnable 线程的生命周期: 当创建Thread类的一个实例时,线程进入新线程状态 当调用线程的start()方法时,它就进入了可运行状态 称一个线程处于不可运行状态,如果它正在睡眠、正在等待、或被另一个线程所阻塞。 用sleep()方法可使线程进入睡眠方式 sleep() 方法的语法: sleep(long t); 上面的语法中,t是线程不活动的毫秒数 当线程完成run方法中循环或分配 null值给此线程,线程对象死亡A Date 类 Date 类封装系统日期和时间信息 Calendar 类: Calendar 类实现Date 类早期版本中方法 get() 方法: 用 get()方法从给定日期中抽取日期、月或年 get() 方法的语法: String get(int field); Calendar类中字段: 字段 返回值  static int HOUR 小时时间  static int MINUTE 分时间  static int SECOND 秒时间  static int DATE 日期的Date部分  static int MONTH 日期的Month部分  static int YEAR 日期的年部分  GregorianCalendar 类: GregorianCalendar类是从Calendar 类扩展过来的 它支持世界上多数部分的日历操作 setTime() 方法: setTime() 方法取 Date 对象为变元 它用当前的日期更新GregorianCalendar 对象 setTime() 方法的语法 : setTime(Date date); 结果: 此applet将需要同时用其它的控件来给出日期和时间,因此使用以下: Thread 类 Runnable 接口 Date 类 Calendar 类 GregorianCalendar类 识别显示日期和时间的位置 showStatus() 方法 用 showStatus()方法来显示浏览器或AppletViewer的状态栏上的消息。它取 String 对象为它的变元 语法: showStatus(String msg); 结果: 日期和时间必须在applet 的状态栏上显示。我们使用 showStatus()方法来做此事 识别表示对象、存储日期、时间、及要显示的消息的变量 结果: Thread datimeThread Date date GregorianCalendar calendar To store date: strDate To store time: strTime To store message to be displayed: strStatus 识别线程应睡眠的持续时间 结果: 1000毫秒 识别引发的异常和错误消息 结果: 被引发的异常: InterruptedException 要显示的消息: “Thread interrupted” 识别日期和时间格式 结果: Date format: mm/dd/yy Time format: hh:mm:ss 编写并入日期和时间信息的代码 4、执行验证 保存、编译、及执行程序 验证程序是否正确地编码 动作: 日期和时间应在状态栏上是可见的 四、指导性练习(45*2分钟) 7.P.1 1、问题陈述 必须在客户材料applet 上连续地刷新不同商人提供的服务。以下服务应被刷新: 商人名 提供的服务  Cellsoft Inc Service charge free for 1 year  SpeakCorp 10% discount on new mobile phones  TalkWorld Inc Buy and win prizes   2、问题分析 3、验证 五、小结 (10分钟) 六.独立实践(45*2分钟) 布置学生进行独立实践7.MR.1、7.MR.2、7.MR.3 根据完成情况进行少量讲解