106 线程互斥和同步例程 - 湖南大学.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
106 线程互斥和同步例程 - 湖南大学

JAVA程序设计 (12) JAVA Programming 湖南大学软件学院 主讲:荣辉桂 Email ronghg@163.com 第10章 多线程 10.1线程的基本概念 10.2 Thread(线程)类和Runnable(可运行)接口 10.3 线程的状态和状态控制 10.4 线程间的互斥 10.5 线程间的同步 10.6 线程互斥和同步例程 10.1线程的基本概念 10.1.1 进程和线程 10.1.2 线程的生命周期和状态 10.1.1 进程和线程 进程是一个执行中的程序。系统可以同时创建多个进程,也就是说,系统可以同时完成多个任务。对每一个进程来说,它拥有自己独立的内存空间、数据等运行中需要的系统资源,它的状态和拥有的资源是完全独立的 线程是一个程序中实现单一功能的一个指令序列,一个程序中可以包含若干个线程。或者简单说,线程是轻量级的进程 进程存在一些问题。例如,如果一个程序要同时完成多项任务,如果把这些任务都设计成一个个进程,当系统频繁地进行进程切换(术语称为进程调度)时,就要占用大量的系统资源(主要是CPU时间)。线程是解决这类问题的一个途径 多线程是指一个进程中同时运行的多个完成不同子任务的线程。多线程不仅可以使一个程序同时完成多项任务,而且为此消耗的系统资源也比进程方法少许多 10.1.2多线程基本概念 10.1.3多线程基本概念 1、线程与进程的区别: 多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响. 线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。 2、多线程的优势: 减轻编写交互频繁、涉及面多的程序的困难. 程序的吞吐量会得到改善. 由多个处理器的系统,可以并发运行不同的线程.(否则,任何时刻只有一个线程在运行) 10.1.4 线程的生命周期和状态 线程的生命周期是指线程从创建、运行到死亡的过程。在一个线程的生命周期内,可以有五种状态,即创建、可运行、运行中、不可运行(或称阻塞)和死亡状态。通过对线程的控制和调度,一个线程可以在这五种状态之间转换 Java 语言支持多线程程序的运行,要编写多线程的程序,需要Java提供的支持线程的类和接口 线程生命周期的状态图如图10.1所示 10.2 Thread(线程类)和Runnable接口 Thread线程类和Runnable(可运行)接口提供了支持线程的功能。由于Thread类和Runnable接口是在java.lang(语言)包中,所以使用Thread类和Runnable接口时不需要使用import导入语句 10.2.1 Thread(线程)类 10.2.2 Runnable(可运行)接口 10.2.1 Thread(线程)类 Thread类是Java中支持多线程机制的一个重要类, 它提供了很多控制和调度线程的方法。这些方法包括:启动、睡眠、运行等 (1)成员变量 l??????? MIN_PRIORITY 线程可以拥有的最小优先级 l??????? MAX_PRIORITY 线程可以拥有的最大优先级 l??????? NORM_PRIORITY 线程默认的优先级 (2)构造方法 l??????? Thread() l??????? Thread(Runnable target) l??????? Thread(Runnable target,String name) l??????? Thread(String name) l??????? Thread(ThreadGroup group,Runnable target) l??????? Thread(ThreadGroup group,String name) (3)常用方法 l??????? static int activeCount() 返回线程组当前线程的数目 l??????? static Thread currentThread() 返回当前运行线程的引用 l??????? void destroy() 撤销线程 l??????? String getName() 返回线程名称 l??????? int getPriority() 返回线程优先级 l??????? ThreadGroup getThreadGroup() 返回当前线程所属的线程组 l??????? void interrupted() 中断当前线程 l??????? boolean isAlive() 是否激活态线程 l??????? void join() 等待当前线程死亡 l??????? void run()

文档评论(0)

yanpizhuang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档