《第9章 Java多线程机制》.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文档。上传文档
查看更多
《第9章 Java多线程机制》.ppt

LOGO JAVA程序语言设计 陈明 编著 第九章 Java多线程机制 线程概述 线程的属性 Java程序的主线程 线程的建立和实现 线程的同步和死锁 线程概述 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,而只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。 线程的状态 线程的优先级 线程的优先级代表该线程的重要程度。当有多个线程同时处于可执行状态并等待获得 CPU时间时,线程调度系统将根据各个线程的优先级来决定给谁分配 CPU 时间,优先级高的线程有更大的机会获得 CPU 时间,优先级低的线程也不是没有机会,只是机会要小一些罢了。 你可以调用Thread类的方法getPriority()和setPriority()来存取线程的优先级,线程的优先级界于1(MIN_PRIORITY)和10(MAX_PRIORITY)之间,缺省是5(NORM_PRIORITY)。 Java程序的主线程 一个Java应用程序主类的public static void main(String[] arg)方法是它的主程序,所以当我们以“java.exe”来执行Java程序时,执行的进入点就是这个main()方法,而这里面的执行流程,其实就是此程序的“主线程”。 由于它是自动建立的线程,因此我们很可能不会注意到它也是“线程”这个事实,但我们不应忽略“主线程”。对于这个由系统自动建立的“主线程”,我们可利用Thread类的currentTread()方法来取得它的对象参考,借此可对“主线程”作一些控制处理。 继承Thread类的方式 主要有下列4个步骤: 1、新的类(如MyThread)继承java.lang包中的Thread 类。 2、覆盖由Thread类继承而来的run()方法,run()方法体的内容就是此线程要做 的任务。当run()执行完,此 Thread 稍后就会自动终止。 3、定义了线程后,并没有创建线程,创建一个线程要通过生成类对象实现。 4、调用实例化对象(这里是指的myThread)的start()方法启动此线程,由JVM 自动去调用run()方法。 实现Runnable接口的方式 实现Runnable接口有四个步骤: 该类要实现(implements)java.lang的Runnable接口类。 要实现Runnable接口类的方法run(),而run()方法的内容就是此线程要作的任务。当run()执行完,此Thread稍后就会自动终止。 配合此类还必须创建Thread类的实例,这一点通过Thread类的构造函数public Thread(Runnable target);来实现。 用该Thread对象的start()方法启动此线程,由JVM自动去调用run()方法。 线程的同步 当两个或多个线程要同时访问共享数据时,要十分小心地加以控制,以便一次只能由一个线程访问共享数据。支持这种控制的机制称为监视器。在一段时间内只有一个线程拥有监视器,拥有监视器的线程才能访问相应的资源,并锁定资源不让其他线程访问。所有其他的线程在试图访问被锁定的资源时被挂起,等待监视器解锁。所有Java对象都有与他们相关的隐含监视器。进入对象监视器的办法是调用对象由synchronized修饰的方法。只要一个线程进入synchronized方法,同类对象的其他线程就不能进入synchronized方法而必须等待。 死 锁 死锁是需要避免的与多任务处理有关的特殊错误类型。当两个线程对一对同步对象有循环依赖关系时会发生死锁。死锁是很难调试的错误,通常它极少发生,只有到两线程的时间段完全符合时才能发生,而且它还可能包含有多于两个的线程和同步对象。为充分理解死锁,观察它的行为是很有用的。 LOGO

文档评论(0)

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

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

1亿VIP精品文档

相关文档