面向对象java程序设计 第12章

面向对象java程序设计 第12章

ID:33498810

大小:339.83 KB

页数:47页

时间:2019-02-26

面向对象java程序设计 第12章_第1页
面向对象java程序设计 第12章_第2页
面向对象java程序设计 第12章_第3页
面向对象java程序设计 第12章_第4页
面向对象java程序设计 第12章_第5页
资源描述:

《面向对象java程序设计 第12章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第12章多线程第12章多线程12.1Java中的多线程实现技术12.2多线程的管理第12章多线程12.1Java中的多线程实现技术12.1.1线程的生命周期每个Java程序都有一个缺省的主线程,对于Application,主线程是main()方法执行的线索。对于Applet,主线程指挥浏览器加载并执行Java小程序。要想实现多线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象来表示线程。新建的线程在它的一个完整的生命周期中通常要经历新生、就绪、运行、阻塞和死亡等五种状态,这五

2、种状态之间的转换关系和转换条件如图12.1所示。第12章多线程新建start就绪运行等待阻塞睡眠挂起死亡图12.1线程的生命周期第12章多线程1.新生状态当用new关键字和某线程类的构造方法创建一个线程对象后,这个线程对象处于新生状态,此时它已经有了相应的内存空间,并已被初始化。处于该状态的线程可通过调用start()方法进入就绪状态。第12章多线程2.就绪状态处于就绪状态的线程已经具备了运行的条件,但尚未分配到CPU资源,因而它将进入线程队列排队,等待系统为它分配CPU。一旦获得CPU资源,则该线程就进入

3、运行状态,并自动地调用自己的run方法。此时,它脱离创建它的主线程,独立开始了自己的生命周期。第12章多线程3.运行状态进入运行状态的线程执行自己的run方法中的代码。若遇到下列情况之一,则将终止run方法的执行。(1)终止操作。调用当前线程的stop方法或destroy方法进入死亡状态。(2)等待操作。调用当前线程的join(millis)方法或wait(millis)方法进入阻塞状态。当线程进入阻塞状态时,在millis毫秒内可由其他线程调用notify或notifyAll方法将其唤醒,进入就绪状态。在

4、millis毫秒内若不唤醒则须等待到当前线程结束。第12章多线程(3)睡眠操作。调用sleep(millis)方法来实现。当前线程停止执行后,则处于阻塞状态,睡眠millis毫秒之后重新进入就绪状态。(4)挂起操作。通过调用suspend方法来实现。将当前线程挂起,进入阻塞状态,之后当其他线程调用当前线程的resume方法后,才能使其进入就绪状态。(5)退让操作。通过调用yield方法来实现。当前线程放弃执行,进入就绪状态。(6)当前线程要求I/O时,则进入阻塞状态。(7)若分配给当前线程的时间片用完时,当

5、前线程进入就绪状态。如当前线程的run方法执行完,则线程进入死亡状态。第12章多线程4.阻塞状态一个正在执行的线程在某些特殊情况下,如执行了suspend、join或sleep方法,或等待I/O设备的使用权,那么它将让出CPU并暂时中止自己的执行,进入阻塞状态。阻塞时它不能进入就绪队列,只有当引起阻塞的原因被消除时,线程才可以转入就绪状态,重新进到线程队列中排队等待CPU资源,以便从原来终止处开始继续运行。第12章多线程5.死亡状态处于死亡状态的线程将永远不再执行。线程死亡有两个原因:一是正常运行的线程完成

6、了它的全部工作;二是线程被提前强制性地终止,例如,通过执行stop或destroy方法来终止线程。第12章多线程12.1.2Thread类的方法Thread类(线程类)是java.lang包中的一个专门用来创建线程和对线程进行操作的类。Java在Thread类中定义了许多方法,帮助我们运用和处理线程。这些方法可分为四组:(1)构造方法。用于创建用户的线程对象,表12.1列出了Thread类的构造方法。(2)run()方法。用于定义用户线程所要执行的的操作。(3)改变线程状态的方法。如start()、slee

7、p()、stop()、suspend()、resume()、yield()和wait()方法等。这是最常用的一组方法。(4)其他方法。如setPriority()、setName()等。第12章多线程表12.1Java.lang.Thread的构造方法构造方法说明构造一个新线程,用此方式创建的线程publicThread()必须覆盖run()方法构造一个新线程,使用指定对象target的publicThread(Runnabletarget)run()方法在指定的线程组group中构造一个新的线public

8、Thread(ThreadGroupgroup,Runnabletarget)程,使用指定对象target的run()方法publicThread(Stringname)用指定字符串名name构造一个新线程在指定的线程组group中用指定字符串名publicThread(ThreadGroupgroup,Stringname)name构造一个新线程用指定字符串名name构造一个新线程,publicThread(R

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

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

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