- 1、本文档共98页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程
3.运行状态
进入运行状态的线程执行自己的run方法中的代码。若遇到下列情况之一,则将终止run方法的执行。
终止操作。调用当前线程的stop方法或destroy方法进入死亡状态。
等待操作。调用当前线程的join(millis)方法或wait(millis)方法进入阻塞状态。当线程进入阻塞状态时,在millis毫秒内可由其他线程调用notify或notifyAll方法将其唤醒,进入就绪状态。在millis毫秒内若不唤醒则须等待到当前线程结束。;第12章多线程
睡眠操作。调用sleep(millis)方法来实现。当前线程停止执行后,则处于阻塞状态,睡眠millis毫秒之后重新进入就绪状态。
挂起操作。通过调用suspend方法来实现。将当前线程挂起,进入阻塞状态,之后当其他线程调用当前线程的resume方法后,才能使其进入就绪状态。
退让操作。通过调用yield方法来实现。当前线程放弃执行,进入就绪状态。
当前线程要求I/O时,则进入阻塞状态。
若分配给当前线程的时间片用完时,当前线程进入就绪状态。如当前线程的run方法执行完,则线程进入死亡状态。;第12章 多 线 程
4.阻塞状态
一个正在执行的线程在某些特殊情况下,如执行了suspend、
join或sleep方法,或等待I/O设备的使用权,那么它将让出CPU
并暂时中止自己的执行,进入阻塞状态。阻塞时它不能进入就绪队列,只有当引起阻塞的原因被消除时,线程才可以转入就绪状态,重新进到线程队列中排队等待CPU资源,以便从原来终止处开始继续运行。;第12章 多 线 程
5.死亡状态
处于死亡状态的线程将永远不再执行。线程死亡有两个原因:一是正常运行的线程完成了它的全部工作;二是线程被提前强制性地终止,例如,通过执行stop或destroy方法来终止线
程。;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程
12.1.2 Thread类的方法
Thread类(线程类)是java.lang包中的一个专门用来创建线程和对线程进行操作的类。Java在Thread类中定义了许多方法,帮助我们运用和处理线程。这些方法可分为四组:
构造方法。用于创建用户的线程对象,表12.1列出了
Thread类的构造方法。
run()方法。用于定义用户线程所要执行的的操作。
改变线程状态的方法。如start()、sleep()、stop()、suspend()、resume()、yield()和wait()方法等。这是最常用的一组方法。
其他方法。如setPriority()、setName()等。;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程
【示例程序c12_1.java】 用Thread类的子类创建两个线程对象。
importjava.util.*;
classc12_1extendsThread{intpauseTime;
Stringname;
publicc12_1(inthTime,StringhStr)
{
pauseTime=hTime;name=hStr;
}
publicvoidrun(){;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程;第12章 多 线 程
例:
classAimplementsRunnable{publicvoidrun(){….}
}
classB{
publicstaticvoidmain(String[]arg){Runnablea=newA();
Threadt=newThread(a);t.start();
}};第12章 多 线 程
【示例程序c12_2.java】 通过创建线程实现“JavaNow!”在屏幕上不停地走动。
importjava.awt.*;
importjava.applet.*;
publicclassc12
文档评论(0)