- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.4 线程控制 由于资源的有限性以及线程之间运行步调的一致性,多个线程在并发执行时,一方面可能会竞争使用同一类资源,另一方面也可能需要保持一定的先后执行顺序。因此,编写多线程程序时,必须要考虑如何对线程进行有效控制,使它们能够合理地使用资源,并保持正确的执行顺序。 方法名 功能说明 void start() 启动一个线程 void stop() 终止一个线程,已经过时,建议不要使用 void suspend() 挂起一个线程 void resume() 使挂起的线程恢复执行 void sleep(long milis) void sleep(long nillis,int nanos) 使线程休眠 void yield() 挂起当前线程,把CPU让给其他线程 void join(long millis,int nanos) void join( ) throws InterruedException 挂起当前线程,直到线程停止 void interrupt() 中断线程的执行 boolean isAlive() 判断线程是否处于可运行状态 Thread类中线程控制方法 7.4.2 基本的线程控制方法 1.线程的创建与启动 在程序中用new运算符创建一个线程时,还需要调用线程的start()成员方法,才能使线程从新建状态转换为可运行状态。如果线程获得了其运行所需的全部资源后就可以执行run()方法在CPU上运行。 2.线程的终止 调用线程的stop()成员方法可以终止当前线程的执行,使线程进入死亡状态。从JDK1.2开始,stop()方法已被废弃。 3.线程的挂起和恢复 (1)sleep()方法 void sleep(long millis); void sleep(long millis,long nanos); (2) suspend()方法和resume()方法 4.线程的阻塞和唤醒 wait()方法使当前线程阻塞,等待某一事件的发生 void wait(long timeout) throws InterruptedException; void wait(long timeout,int nanos) throws InterruptedException; notify()方法用来唤醒一个处于阻塞状态的线程,任何一个已经满足了被唤醒条件的线程都可能被唤醒。而notifyAll()方法则用于唤醒所有处理阻塞状态的线程。 void notify(); void notifyAll(); 5.线程的让步 yield()方法可以使当前执行的线程让出CPU给其他线程执行,强制线程间合作。 6.等待其他线程结束 一个线程A调用另外一个线程B的join()方法可以使线程A暂停运行,直至线程B终止。 void join() throws InterruptedException void join(long timeout) throws InterruptedException void join(long milliseconds, int nanoseconds) throws InterruptedException 目 录 7.1 线程的基本概念 7.2 线程的创建 7.3 线程状态及优先级 7.4 线程控制 7.5 线程的同步与互斥 7.6 线程死锁 7.7 综合应用举例 7.5 线程的同步与互斥 在大多数基于多线程实现的系统中,经常会出现两个或者两个以上的线程同时使用同一类有限资源的情况,如共享某变量或者某外部设备等。 以文件的访问为例。当一个线程向文件中写数据,而同时另外一个线程从同一个文件中读取数据,如果写数据的线程没有等到读取数据的线程读取完毕就继续写数据,就会出错。 7.5.1 临界区和互斥 在一个时刻只能够被一个线程访问的资源称为临界资源,而访问临界资源的那段代码则被称为临界区。 临界区必须互斥地使用,即一个线程执行临界区中的代码时,其他线程不允许再进入临界区,直至该线程退出为止。 7.5.2 Java的互斥锁机制 Java语言引入了对象“互斥锁”的机制,以保证共享数据操作的完整性。每个Java对象都对应于一个”互斥锁”标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。一旦某个线程获得了该锁,别的线程如果希望获得该锁,只能等到这个线程释放锁之后。 关键字synchronized Java中的关键字synchronized用来与对象的互斥锁联系。当某个对象用synchronized 修饰时,表明该对象在任一时刻只能由一个线程访问。此时,如果有第二个线程也要访问同一个对象,它也试
您可能关注的文档
最近下载
- 《新时代职业英语》教学资源_传媒英语_Unit_6_.pptx VIP
- 中医临床执业医师考试题及答案2025版.docx VIP
- 超声中信号处理.ppt VIP
- 《新时代职业英语》教学资源_传媒英语_Unit_7_.pptx VIP
- 部编人教版道德与法治五年级上册《全册课件》.pptx
- 《新时代职业英语》教学资源_传媒英语_Unit_9.pptx VIP
- 宝钢质量管理经验.doc VIP
- 勿忘历史,珍爱和平——抗战胜利80周年主题班会-2025-2026学年初中主题班会优质课件.pptx VIP
- Kuka控制系统 KR C5安装指南.pdf VIP
- 学习2025年《初中初三开学第一课》.pptx VIP
文档评论(0)