Java2第11章的PPT.pptVIP

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java2第11章的PPT

11.1.1 程序、进程、线程、多任务 程序(Program):含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。 进程(Process):程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。 多任务(Multi task):是指在一个系统中可以同时运行多个程序,即有多个独立运行的任务,每一个任务对应一个进程。 线程(Thread) :也是一个执行中的程序,但线程是一个比进程更小的执行单位。一个进程在其执行过程中可以产生多个线程,形成多条执行线路。 线程与进程的区别: 多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响. 线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。 多线程就是同时执行一个以上的线程,一个线程的执行不必等待另一个线程执行完才执行,所有的线程都可能发生在同一时刻。 对线程的综合支持是Java技术的一个重要特色.它提供了thread类、监视器和条件变量的技术. 虽然Macintosh,Windows NT,Windows 9等操作系统支持多线程,但若要用C或C++编写多线程程序是十分困难的,因为它们对数据同步的支持不充分. 11.1.2 线程的状态与生命周期 新建线程在它的一个完整的生命周期内通常要经历五种状态。通过线程的控制与调度可使线程在这几种状态间转化,如图11.1所示。 1.新建状态(Newborn) 。 2.就绪状态(Runnable) 。 3.运行状态(Running)。 4.阻塞状态(Blocked)。 5.消亡状态(Dead) 线程的状态与生命周期 1.?? 创建状态(new Thread) 当一个线程处于创建状态时,它仅仅是一个空的线程对象,系统不为它分配资源。 Thread myThread = new MyThreadClass( ); 2.?? 可运行状态(Runnable) Thread myThread = new MyThreadClass( ); myThread.start( ); 其中start()方法产生了运行这个线程所需的系统资源,安排其运行,并调用线程体—run()方法,这样就使得该线程处于可运行( Runnable )状态。当一个线程处于可运行状态时,系统为这个线程分配了它所需的系统资源,安排运行并调用线程运行方法,这样就使得该线程处于可运行状态。需要注意的是这一状态并不是运行中状态,因为线程也许实际上并未真正运行。 3.?? 运行中状态(Running) 当一个线程处于可运行状态时,系统为这个线程分配了它所需的系统资源,Java的运行系统调度选中一个可运行状态的线程,该线程占有CPU并转为运行中状态。 线程的状态与生命周期 4.?? 不可运行状态(Not Runnable) 不可运行状态也称为阻塞状态(Blocked)。如被人为挂起或需要执行费用时输入输出操作时,将让出CPU,并暂时终止自己的执行,进入阻塞状态。阻塞时它不能进入排队队列,只有当引用阻塞的原因被消除时,线程才可以转入就绪状态,重新进到线程队列中排队等待CPU资源,以便从原来终止处开始继续运行。 5.?? 死亡状态(Dead) 处于死亡状态的线程不具有继续运行的能力。线程死亡的原因有两个: A.正常运行的线程完成了它的全部工作,即执行完了run()方法的最后一个语句并退出; B.线程被提前强制性地终止,如通过执行stop()终止线程。 线程在各个状态之间的转化及线程生命周期的演进是由系统运行的状况、同时存在的其他线程和线程本身的算法所共同决定的。 11.1.3 线程的调度与优先级 调度:指在各个线程之间分配CPU资源。 优先级:在多线程系统中,每个线程都 被赋予一个执行优先级。优先级决定了线程被CPU执行的优先顺序。 在Java中,Java提供一个线程调度器来监控程序中启动后进入可运行状态的全部线程。线程调度器按线程的优先级高低选择高优先级线程(进入运行中的状态)执行,同时线程调度是先占式调度,即如果在当前线程执行过程中,一个更高优先级的线程进入可运行状态,即这个线程立即被调度执行。先占式调度又分为:独占方式和分时方式。 (1)、独占方式 独占方式下,当前执行线程将一直执行下去,直到执行完毕或由于某种原因主动放弃CPU,或者是有一个更高优先级的线程进入可运行状态。 (2)、分时方式 当前运行线程执行完当前时间片后,如果有可运行状态的线程,系统将选中其他可运行状态的线程执行,当前线程进入可运行状态,等待下一个时间片的调度 线程的优先级用数字来表示,范围从1到10,即Thread.MIN_PRIORITY到Thread.MAX_PRIOR

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档