第7节 多线程.ppt

  1. 1、本文档共75页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统支持多进程,使多个程序能并发执行,以改善 资源使用率和提高系统效率; 操作系统支持多线程进程,能够减少程序并发时所付出 的时空开销,使得并发粒度更细,并发性更好。 图7.1 多线程进程模型 线程是处理器调度和分派的基本单位,也有生命周期; 线程的状态有5种:新建、就绪、运行、等待、终止。 线程在其生命周期中经历着状态的变化。 public interface Runnable { public abstract void run(); } Thread类声明实现Runnable接口,并声明一些用于创建、 管理和控制线程对象的方法。 public void run() //描述线程操作的线程体 { if(target!=null) target.run(); //执行目标对象的run()方法 } public void run() //描述线程操作的线程体 public final String getName() //返回线程名 public final void setName(String name) //设置线程名 public static int activeCount() //返回当前活动线程个数 public static Thread currentThread() //返回当前执行线程对象 public Sting toString() //返回线程的字符串信息,包括名字、 优先级和线程组 public synchronized void start() //启动已创建的线程对象 } Thread类的run()方法声明如下: public void run() //描述线程操作的线程体 { if (target != null) target.run(); //执行目标对象的run()方法 } Thread t1 = new Thread(); //t1的run()方法为空 Thread thread_odd = new Thread(odd,奇数线程); //thread_odd实际执行odd的run()方法 (1) 线程启动 public static void sleep(long millis) throws InterruptedException public void interrupt() //设置当前线程对象运行中断标记 public boolean isInterrupted() //判断线程是否中断 public static boolean interrupted() //判断线程是否中断 1. Thread类中声明了3个表示优先级的公有静态常量: 线程调度:由优先级驱动,抢占式的调度系统; 如果两个线程要访问同一资源,则线程间存在资源竞争关 系,这就是线程间的间接制约关系。 线程互斥:解决线程间竞争关系的手段。 线程互斥:指若干个线程要使用同一共享资源时,任何 时刻最多允许一个线程去使用,其他要使用该资源的线 程必须等待,直到占有资源的线程释放该资源。 (1) 同步语句 使用synchronized 声明一条语句为临界区,该语句称为同步语句。 同步语句执行过程: (2)同步方法 synchronized 方法声明 当一个进程的多个线程为完成同一任务而分工协作时, 它们彼此之间有联系,知道其他线程的存在,而且受其 他线程执行的影响,这些线程间存在协作关系,这是线 程间的直接制约关系。 线程同步(synchronization):解决线程间协作关系的手段。 线程同步: 指两个以上线程基于某个条件来协调它们的活动。 一个线程的执行依赖于另一个协作线程的消息或信号,当一 个线程没有得到来自于另一个线程的消息或信号时则需等待, 直到消息或信号到达才被唤醒。 (1) 背景 多个线程需要对同一个共享变量进行操作,所以多个线 程间必须互斥地执行,即这些操作方法必须是互斥的。 (3) 线程根据信号量状态而执行 多个线程间彼此根据信号量的状态确定该谁执行:当一个 线程开始执行

文档评论(0)

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

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

1亿VIP精品文档

相关文档