第11章多线程-2.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章多线程-2

第11章 多线程 本章学习目标 理解多线程的概念 掌握如何创建线程 掌握如何使线程同步 理解线程优先级、状态和线程调度 本节主要内容 线程同步 线程优先级 线程调度 线程间的通信 线程同步 当多个线程对同一资源访问时可能会引起冲突。 示例:DepositInBank.java 通过线程同步解决对共享资源访问的问题。 示例:DepositInBankWithSync.java 线程同步 将方法同步的格式如下: synchronized 返回值类型 方法名() {} 一个简单的应用例子如下: public class someClass { public synchronized void aMethod() { // Synchronized code block } } 线程同步 将某方法中某段代码同步的语法如下: synchronized (对象 ) { 需要同步分代码段; } 一个简单的应用例子如下: public class someClass { public void aMethod() { ... synchronized(this) { // Synchronized code block } ... } } 线程的优先级 线程可以设定优先级,高优先级的线程可以安排在低优先级线程之前完成。 Java中,线程的优先级从低到高以整数1~10表示,共分为10级。设置优先级是通过调用线程对象的setPriority()方法来进行的。 默认优先级为5,优先级高的线程获得CPU时间的机会相对较高。 示例:ThreadPriority.java 线程的调度 public static void sleep(long millis) throws InterruptedException 使当前运行的线程休眠millis指定的毫秒数。 public static void yield() 当前正在运行的线程让出CPU,允许其它线程运行。 public final void wait() throws InterruptedException 使当前线程处于等待状态,直到其它线程唤醒它。 public final void notify() 唤醒一个正在等待的线程。 public final void notifyAll() 唤醒所有正在等待的线程。 线程的状态 new(新建):一个线程在调用new()方法之后,调用start()方法之前所处的状态。 runnable(就绪):一旦线程调用了start()方法,线程就转到Runnable()状态。注意,如果线程处于Runnable状态,它也有可能不在运行,这是因为还存在优先级和调度问题。 running(运行状态):线程正在占用CPU时间 blocked(阻塞/挂起状态):线程处于阻塞状态。这是由两种可能性造成的:因挂起而暂停;由于某些原因而阻塞,例如等待IO请求的完成等。 dead(终止状态):线程转到退出状态。这有两种可能性:run()方法执行结束;调用了stop()方法。 线程状态之间的切换 线程控制(线程调度) sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其他线程可能正在运行而且没有被调度为放弃执行,除非: (a) “醒来”的线程具有更高的优先级; (b) 正在运行的线程因为其他原因而阻塞。 来看如下程序段: public class Test implements Runnable { public void run() { while (true) { try { Thread.sleep(10); } catch (InterruptedException e) { // This threads sleep was interrupted // by another thread } } } } 线程控制(线程调度) Threa

文档评论(0)

kakaxi + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档