网站大量收购闲置独家精品文档,联系QQ:2885784924

《Java 2面向对象程序设计基础》第6章:线程.ppt

《Java 2面向对象程序设计基础》第6章:线程.ppt

  1. 1、本文档共72页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 线程 (时间:3次课,6学时) 第6章 线程 教学提示:计算机世界要想真正地反映现实世界,必须解决事情的同步问题,即解决程序实现多线程的问题。 因此可编写有几条执行路径的程序,使得程序能够同时执行多个任务,借此实现多线程运行。Java语言的一大特点就是内置对多线程的支持。 本章主要介绍:Java中的线程作用机制 、线程的实现方法、线程的控制和线程的同步与死锁 。 第6章 线程 6.1 线程简介 6.2 线程的实现方法 6.3 线程的控制 6.4 Java的多线程实例 6.5 线程的同步与死锁 6.6 ThreadLocal问题 6.7 课后练习 6.1 线程简介 6.1.1 程序、进程和线程 6.1.2 线程的生命周期 6.1.3 线程的优先级及其调度6.1.4 线程组 6.1 线程简介 对于许多编程人员来说,线程并不是那么的陌生。但是在Java中,线程的作用机制又是如何工作的呢?本节将重点介绍Java中的线程作用机制。 6.1.1 程序、进程和线程 程序是由若干条语句组成的语句序列,是一段静态代码。 进程是程序的一次动态执行过程。 需要特别指出的是,进程不仅包括程序代码,还包括系统资源。即一个进程既包括其所要执行的指令,也包括执行指令所需的任何系统资源,如CPU、内存空间等。不同进程所占用的系统资源相对独立。 6.1.1 程序、进程和线程 线程又是一个抽象的概念,它包含了一个计算机执行传统程序时所做的每一件事情。线程是一种在CPU上调度的程序状态,它在某一瞬时看来只是计算过程的一个状态。一个进程中的所有线程共享该进程的状态,它们存储在相同的内存空间中,共享程序的代码和数据。所以当其中一个线程改变了进程的变量时,那么其他线程下次访的将是改变后的变量。 多线程是指同一个应用程序中有多个顺序流同时执行。在一个程序中可以同时运行多个不同的线程来执行不同的任务,各个线程并行地完成各自的任务。浏览器就是一个典型的多线程例子。 6.1.2 线程的生命周期 每个Java程序都有一个默认的主线程。对于应用程序,主线程是main()方法执行的路径。图6-1说明线程的生命周期及其状态转换。 6.1.2 线程的生命周期 图6-1 线程的状态转换 6.1.2 线程的生命周期 从图6-1中可以看出:一个线程从创建到消亡的整个生命周期中,总是处于下面5个状态中的某个状态。 1. 新建状态 通过new命令创建一个Thread类或其子类的线程对象时,该线程对象处于新建状态。创建一个新的线程对象可以用下面的语句实现: Thread thread=new Thread(); 该语句是最简单的创建线程的语句,但该语句创建的线程是一个空的线程对象,系统还未对这个线程分配任何资源。 6.1.2 线程的生命周期 2. 就绪状态 该状态又可称为可运行状态。处于新建状态的线程可通过调用start()方法启动该线程。Start()方法产生了线程运行需要的系统资源。启动后的线程将进入线程就绪队列排队等待CPU服务,此时线程已经具备了运行的条件,一旦它获得CPU等资源时就可以脱离创建它的主线程而独立运行。 6.1.2 线程的生命周期 3. 运行状态 当处于就绪状态的线程被调度并获得CPU资源时,使进入运行状态。每个线程对象都有一个重要的run()方法,run()方法定义了该线程的操作和功能。当线程对象被调度执行时,它将自动调用其run()方法并从第一条语句开始顺次执行。 6.1.2 线程的生命周期 4. 阻塞状态 又称不可运行状态。当发生下列情况之一时,线程就进入阻塞状态。 (1) 等待输入输出操作完成。 (2) 线程调用wait()方法等待一个条件变量。 (3) 调用了该线程的sleep()休眠方法。 (4) 调用了suspend()挂起方法。 6.1.2 线程的生命周期 5. 消亡状态 消亡状态又称死亡状态,当调用run()方法结束后,线程就进入消亡状态,这是线程的正常消亡。另外线程还可能被提前强制性消亡。不管何种情况,处于消亡状态的线程不具有继续运行的能力。 6.1.3 线程的优先级及其调度 线程被创建之后,每个Java线程的优先级都在Thread.MIN_PRIORITY(常量1)和Thread.MAX_PRIORITY(常量10)的范围之内。每个新建线程的默认优先级都为Thread.NORM_PRIORITY(常量5)。可以用方法int getPriority()来获得线程的优先级,同时也可以用方法 void setPriority(int p)在线程被创建后改变线程的优先级。 一个线程将始终保持运行状态,直到出现下列情况:由于I/O(或其他一些原因)而使该

您可能关注的文档

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档