下载此文档

java第五章java高级编程.ppt


文档分类:IT计算机 | 页数:约102页 举报非法文档有奖
1/102
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/102 下载此文档
文档列表 文档介绍
第五章 Java高级编程
Java多线程机制
输入输出流类
网络编程
Java多线程机制
Java语言从设计之初,就考虑到对多线程的支持,因而在系统级和语言级均提供了对多线程的支持。
使用多线程的优点就是:当程序中有多个可执行线程时,能够充分利用系统资源,提高程序执行效率。
本小结介绍多线程应用程序的设计方法。
(一)

线程是比进程更小的单位,是应用程序中的一个可执行线索,多线程就是同一个应用程序中有多个可执行线索,它们可以并发执行。
前面介绍的所有例程都是单线程的,即一个应用程序只存在一个可执行线索。在执行过程中,如果某部份代码因为等待某个I/O操作而受阻,则程序的其他部分即使与此无关也不能执行,这样就严重地浪费了CPU资源。多线程机制的提出就是为了解决这个问题。
(二)
回忆一下多进程并行执行的情况,在CPU上执行的某个进程因为等待某种资源而受阻时,多任务操作系统可以使该进程挂起,而根据某种调度原则启动另外一个不同的进程执行,直到前一进程获得其所需资源,才唤醒该进程,让它继续执行。
这样,在多任务操作系统的调度下,可以让多个进程并行执行,能够较好地利用CPU资源,但仍然难以满足现代应用程序的需要。
例如,需要在同一应用程序中完成声音播放、图像显示、网络文件下载等多项工作,如果使用传统的单线程程序,就只能顺序的逐一实现,而使用多线程方法则可以并发实现。
(三)
多线程就是同一程序中多个任务的并发实现。它与进程有相似之处,可以动态的生成或销毁等,它们之间的差别主要体现在如下两个方面:
作为基本的执行单元,线程的划分比进程小,因此,支持多线程的系统要比只支持多进程的系统并发程度高。
进程把内存空间作为自己的资源之一,每个进程均有自己的内存单元。线程却共享内存单元,通过共享的内存空间来交换信息,从而有利于提高执行效率。
由于线程划分更小,涉及的资源更少,因而使用更加灵活、方便。
(四)

应用程序中的多个线程能够并发执行,但从系统的内部来看,所有线程仍然是串行的一个一个地执行,那么如何来决定哪一个线程先执行,哪一个线程后执行呢?
Java引入了优先级的概念,优先级就是线程获得CPU而执行的优先程度,优先级越高,获得CPU的权力越大,执行的机会越多,执行的时间也越长。
(五)
Java把优先级划分为10级,用1至10的整数表示,数值越大,优先级越高。在创建线程时,可以为线程分配优先级。
在Thread类中定义了三个优先级常量:MIN_PRIORITY, MAX_PRIORITY和NORM_PRIORITY,其值分别为1, 10, 5。
在为线程分配优先级时,其值应该在1至10之间,否则将出错。
如果应用程序没有为线程分配优先级,则Java系统为其赋值为NORM_PRIORITY。
(六)
调度就是分配CPU资源,确定线程的执行顺序。
Java采用抢占式调度方式,即高优先级线程具有剥夺低优先级线程执行的权力。
如果一个低优先线程正在执行,这时出现一个高优先级线程,那么低优先级线程就只能停止执行,放弃CPU,推回到等待队列中,等待下一轮执行,而让高优先级线程立即执行。
如果线程具有相同的优先级,则按"先来先服务"的原则调度。
(七)
理解了Java的抢占式调度策略后,在设计程序时,应该让高优先级线程执行一段时间后,能够交出使用权,放弃CPU。
有两个方法可以达到这一目的:
一是调用sleep()方法,暂时进入睡眠状态,从而让出CPU,使有相同优先级线程和低优先级线程有执行的机会。
二是调用yield()而放弃CPU,这时和它有相同优先级的线程就有执行的机会。
(八)

每个Java程序都有一个缺省的主线程:
对于Application,主线程是main方法执行的线索;
对于Applet,主线程指挥浏览器加载并执行Java小程序。
要想实现多线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象来表示线程。

java第五章java高级编程 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数102
  • 收藏数0 收藏
  • 顶次数0
  • 上传人junjun2875
  • 文件大小884 KB
  • 时间2018-06-09