Java程序设计应用开发教程 教案-单元7.2 多线程_第1页
Java程序设计应用开发教程 教案-单元7.2 多线程_第2页
Java程序设计应用开发教程 教案-单元7.2 多线程_第3页
Java程序设计应用开发教程 教案-单元7.2 多线程_第4页
Java程序设计应用开发教程 教案-单元7.2 多线程_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

教师备课纸课题单元7.2多线程课型理实一体授课班级授课时数4教学目标了解线程与进程的区别。熟悉实现多线程的方法。熟悉线程同步的方法。能通过继承Thread类实现多线程。能通过Runnable接口实现多线程。能使用方法或代码块实现线程同步。能使用多线程和套接字实现服务器服务多个客户的操作。教学重点继承Thread类实现多线程通过Runnable接口实现多线程使用多线程和套接字实现服务器服务多个客户的操作。教学难点使用多线程和套接字实现服务器服务多个客户的操作。学情分析教学效果教后记。单元任务7.2多用户登录任务描述:多个用户登录自动出货管理系统,需要在服务器与多个客户端之间进行通信,效果如图7-2所示。在服务器启用多线程模式时,可以通过线程来处理不同用户发送的信息。当每个用户登录时,从客户端发起登录请求,将登录用户数据传递到服务器,由服务器显示用户登录信息,并将信息响应给客户端(登录成功或登录失败)。当有多个客户端连接到服务器时,服务器会为每个客户端建立一个线程来处理接收到信息,而不会产生阻塞,实现一个服务器与多个客户端的通信。图7-2多用户登录相关知识1.线程与进程1.在高速公路收费匝道上,经常会看到排成长龙的车队。如果让你来缓解这一拥塞的交通状况,你的方案是什么?2.在一个行政收费大厅里,如果只有一个办事窗ロ,等待办事的客户很多。解决方案是?进程可以理解为一个应用程序的执行过程,应用程序一旦执行,就是一个进程。如果把进程比作一个收费站,多个收费匝道就可以比作线程。如果将行政大厅比喻为一个进程,每个办事窗口就是一个线程。进程是并发执行程序在执行过程中资源分配和管理的基本单位(资源分配的最小单位),每个进程都有自己独立的地址空间。线程是比进程更小的执行单元,是进程中的一个实体,是被系统独立调度和分派的基本单位。一个进程在执行过程中,可以产生多个线程。同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。2.多线程多线程的机制则指可以同时运行多个程序块(进程的多条路径),在Java中被称为并发机制。采用多线程机制可以是计算机资源得到更充分的使用,多线程可以使程序在同一时间内完成很多任务操作。例如多线程在Windows操作系统中的运行,如图7-3所示。图7-3多线程在Windows操作系统中的运行模式引入:单一线程的运行流程(代码略)3.实现多线程的两种方式(1)继承java.lang.Thread类Thread类是Java.lang包中的一个类,Thread类的对象用来代表线程。Thread类的构造方法publicThread():创建一个新的线程对象publicThread(StringthreadName):创建一个名称为threadName的线程对象Thread类的常用方法Interrupt():中断线程run():如果该线程是使用独立的Runnable对象构造的,则调用Runnable对象的run()方法,否则,该方法不执行任何操作并返回。start():使该线程开始执行,Java虚拟机调用该线程的run()方法。sleep():在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)(2)实现多线程的方法创建一个继承Thread类的子类覆写Thread类的run()方法。创建线程类的一个对象。通过线程类的对象调用start()方法启动线程(启动之后会自动调用覆写的run()方法执行线程)1.使用继承Thread类的方式同时激活多个线程。publicclassThreadDemoextendsThread{privateStringname;publicThreadDemo(Stringname){=name;}//重写run()方法publicvoidrun(){for(inti=0;i<5;i++){System.out.println(name+"运行:"+i);try{sleep((int)Math.random()*10);//正在执行线程休眠}catch(InterruptedExceptione){e.printStackTrace();}}}publicstaticvoidmain(String[]args){ThreadDemot1=newThreadDemoTest("A");//创建线程对象t1ThreadDemoTt2=newThreadDemoTest("B");//创建线程对象t2t1.start();//启动线程t1t2.start();//启动线程t2}}如果当前类不仅要继承其他类(非Thread类),还要实现多线程,那么如何处理呢?(2)实现java.lang.Runnable接口创建Runnable对象;使用参数为Runnable对象的构造方法创建Thread对象;调用start()方法启动线程。改进示例1,使用实现java.lang.Runnable接口的方式编写代码。4.线程生命周期及状态线程具有生命周期,其中包含5种状态,分别为新建状态、就绪状态、运行状态、暂停状态(包含休眠、等待和阻塞)和死亡状态。案例:根据所给代码,补充完整,实现多线程在模拟红绿灯变化场景。5.多线程的同步同步代码与同步方法锁的是对象,而不是代码。如果某个对象被同步代码块或同步方法锁住了,那么其他使用该对象的代码必须等待,直到该对象的锁被释放。使用代码块实现线程同步同步机制使用synchronized关键。每个Java对象都有一个内置锁,如果代码块使用synchronized关键字进行声明,通过锁定指定的对象,来对同步块中包含的代码进行同步,则使用该关键字的代码块称为同步块,也称为临界区。synchronized(Object)使用方法实现线程同步每个Java对象都有一个内置锁,如果方法使用synchronized关键字进行声明,内置锁就会保护整个方法。在在调用该方法前,需要获得内置锁,否则程序将会处于阻塞状态。publicsynchronizedvoidf(){}使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论