《Java多线程机制》PPT课件.ppt

《Java多线程机制》PPT课件.ppt

ID:51992383

大小:83.50 KB

页数:20页

时间:2020-03-27

《Java多线程机制》PPT课件.ppt_第1页
《Java多线程机制》PPT课件.ppt_第2页
《Java多线程机制》PPT课件.ppt_第3页
《Java多线程机制》PPT课件.ppt_第4页
《Java多线程机制》PPT课件.ppt_第5页
资源描述:

《《Java多线程机制》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第13章Java多线程机制本章要点:进程与线程线程的状态多线程的实现方法通过继承Thread类实现多线程通过Runnable接口实现多线程线程的调度线程的同步实现13.1Java中的线程计算机的发展日新月异,个人计算机上的操作系统也纷纷采用多任务和分时设计,将早期只有大型计算机才具有的系统特性带到了个人计算机系统中。一般可以在同一时间内执行多个程序的操作系统都有进程的概念。一个进程就是一个执行中的程序,而每一个进程都有自己独立的一块内存空间、一组系统资源。在进程概念中,每一个进程的内部数据和状态都是完全独立的。Java程序

2、通过流控制来执行程序流,程序中单个顺序的流控制称为线程,多线程则指的是在单个程序中可以同时运行多个不同的线程,执行不同的任务。多线程意味着一个程序的多行语句可以看上去几乎在同一时间内同时运行。13.1.1进程与线程进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。如果把公司一天的工作比作一个进程,那么早上公司开门上班是进程的开始,晚上下班关门是进程的结束。线程是比进程更小的执行单位。一个进程在其执行过程中,可以产生多个线程,形成多条执行线索,每条线

3、索,即每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。就像公司一天的工作开始后,可以有多个不同的“线程”进行运作,如财务部门、开发部门、销售部门等。我们知道,每个进程都有一段专用的内存区域,与此不同的是,线程间可以共享相同的内存单元(包括代码与数据),并利用这些共享单元来实现数据交换、实时通信与必要的同步操作。比如在公司一天的工作开始后,财务部门、开发部门和销售部门这3个线程可以共享公司的内部网络资源,财务部门、销售部门可以共享公司的账目数据等。多线程的程序能更好地表达和解决现实世界的具体问题,是计算机应用

4、开发和程序设计的一个必然发展趋势。13.1.2线程的状态一个线程在任何时候都处于某种线程状态。线程的几个主要状态有创建、运行、中断和死亡4种状态。1.创建(NewThread)Java的线程是通过java.lang.Thread类来实现的。当我们生成一个Thread类的对象之后,一个新的线程就产生了。执行下列语句时,线程就处于创建状态:ThreadmyThread=newMyThreadClass();当一个线程处于创建状态时,它仅仅是一个空的线程对象,系统不为它分配资源。2.运行(Runnable)线程创建之后就具备了运

5、行的条件,一旦轮到它来享用CPU资源时,就可以脱离创建它的主线程独立开始自己的生命周期了。执行下列语句时,线程就处于运行状态:ThreadmyThread=newMyThreadClass();myThread.start();当一个线程处于可运行状态时,系统为这个线程分配了它所需的系统资源,安排其运行并调用线程运行方法,这样就使得该线程处于可运行(Runnable)状态。需要注意的是这一状态并不是运行中状态(Running),因为线程也许实际上并未真正运行。由于很多计算机都是单处理器的,所以要在同一时刻运行所有的处于可运

6、行状态的线程是不可能的,Java的运行系统必须实现调度来保证这些线程共享处理器。3.中断(NotRunnable)一个正在执行的线程可能被人为地中断,使其让出CPU的使用权,暂时中止自己的执行,进入阻塞状态。阻塞时它不能进入排队队列,只有当引起阻塞的原因被消除时,线程才可以转入就绪状态,重新进到线程队列中排队等待CPU资源,以便从原来终止处开始继续运行。进入中断状态的原因有如下几条:(1)调用了sleep()方法;(2)调用了suspend()方法;(3)为等候一个条件变量,线程调用wait()方法;(4)输入输出流中发生

7、线程阻塞。4.死亡(Dead)处于死亡状态的线程不具有继续运行的能力。线程死亡的原因有两个,一个是正常运行的线程完成了它的全部工作,另一个是线程被提前强制性地终止。所谓死亡状态就是线程释放了实体,即释放分配给线程对象的内存。线程的状态创建状态运行状态中断状态死亡状态NewThread()Start()13.1.3多线程的实现方法在Java中,创建线程的方法有两种:一种方法是通过创建Thread类的子类来实现,另一种方法是通过实现Runnable接口的类来实现,具体如下。方法一:定义一个线程类,它继承线程类Thread并重写

8、其中的方法run(),这时在初始化这个类的实例时,目标target可为null,表示由这个实例来执行线程体。由于Java只支持单重继承,用这种方法定义的类不能再继承其他父类。方法二:提供一个实现接口Runnable的类作为一个线程的目标对象,在初始化一个Thread类或者Thread子类的线程对象时,把

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。