Java程序设计基础教程(慕课版)(第2版) 教案 第10单元 并发编程.docx
PAGE1
PAGE
第10单元并发编程
课程名称
Java程序设计基础教程
(慕课版)
项目名称
并发编程
任务名称
并发编程
课时
6
项目性质
□演示性□验证性□设计性√综合性
授课班级
授课日期
授课地点
教学目标
能力目标:
1.具备创建线程的能力
2.具备调度线程的能力
3.具备使用多线程解决问题的能力
知识目标:
了解进程和线程的区别和联系
掌握线程的创建和调度方法
掌握多线程的应用
素质目标:
1.培养学生知识掌握和技能运用能力
2.培养学生团结合作、互帮互助的能力;
教学内容
1.任务描述
2.任务展示与实现
(1)需要处理的是文件夹,
(2)如果当前文件夹下有子文件夹,则将子文件夹当作另一个任务,加入到处理任务链表中来
(3)汇总所有任务的计算结果,即指定文件夹的总大小
3.教师讲解本任务涉及的知识点
4.任务小结
教学重点
线程的创建
线程的调度
教学难点
继承Thread类
同步与互斥
教学准备
1.装有JDK、Eclipse的电脑
2.教学课件PPT
3.教材:《Java程序设计基础教程(慕课版)》董勇傅雷扬人民邮电出版社
作业设计
实现MapReduce的并发
教学过程
教学
环节
教学内容与过程
(教学内容、教学方法、组织形式、教学手段)
课前组织
做好课前“5分钟”教学管理(多媒体、实训室),做好上课前的各项准备工作(打开电脑、打开课件、打开软件、打开U盘中的素材位置、打开授课计划、教案等),吸引学生注意力。
课程
说明
【课前说明】
本章讲解了进程和线程的区别和联系、线程的创建方式、线程的调度问题,梳理了线程的5种状态:新建、就绪、阻塞以及运行状态和死亡状态,涉及线程的休眠、同步和死锁等问题也都做了讲解;并讲解了线程池技术和带有返回值的Callable对象和接收返回值的Future对象,对Future对象的isDone()方法和get()方法做了简单介绍。
【目的】
使学生从了解本单元的学习目标、学习重点、考评方式等方面明确学习本单元知识的要求和目标。
课程
内容
描述
讲解线程的创建方法
线程的创建方式,一种是继承Thread类,另一种是实现Runnable接口,继承Thread类后可以直接调用start()方法启动线程,而实现Runnable接口则需要使用Thread类进行包装后方可调用start()方法。
讲解线程的调度方法
梳理了线程的5种状态:新建、就绪、阻塞以及运行状态和死亡状态,涉及线程的休眠、同步和死锁等问题也都做了讲解。
讲解多线程的使用
Java中的线程池技术是运行场景最多的并发框架,几乎所有需要异步或者并发执行任务的程序都可以使用线程池技术。合理使用线程池技术可以降低线程创建和销毁造成的消耗,提高相应速度和提高线程的可管理性。Callable用法和Runnable类似,只不过调用的是call()方法,而不是run()方法,该方法有一个泛型返回值类型,可根据需要指定。
案例:
Thread实现多线程
publicclassThreadDemo{
publicstaticvoidmain(String[]args){
for(inti=0;i10;i++){
//创建10个MyThread类的对象,并运行
MyThreadthread=newMyThread();
thread.start();
}
}
}
//继承了Thread类的类
classMyThreadextendsThread{
@Override
publicvoidrun(){//重写父类的run方法
for(inti=0;i3;i++){//循环打印输出信息
System.out.println(Thread.currentThread().getName()+-正在执行!);
}
}
}
计划任务线程池
publicclassSchedulePoolDemo{
publicstaticvoidmain(String[]args){
ScheduledExecutorServicees=Executors.newScheduledThreadPool(1);//创建一个计划任务线程池,参数表示线程池的个数