Java基础教程 教学课件 ppt 作者 978-7-302-19835-2PPT08多线程.ppt

Java基础教程 教学课件 ppt 作者 978-7-302-19835-2PPT08多线程.ppt

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 多线程 8.1 多线程的概念 8.2 线程类 8.3 资源的协调与同步 8.4 线程间通信 8.1 多线程的概念 程序是一段静态的代码,它是应用软件执行的蓝本。进程就是程序的运行时的一个实例。 线程可以看作单独地占有CPU时间来执行相应的代码的。 线程是共享地址空间的,也就是说多线程可以同时读取相同的地址空间,并且利用这个空间进行交换数据。 8.1 多线程的概念 多线程具有以下特点: (1)多个线程在运行时,系统自动在线程之间进行切换; (2)由于多个线程共存于同一块内存,线程之间的通信非常容易; (3)Java将线程视为一个对象。线程要么是Thread类的对象,要么是接口Runnable的对象。 (4)当多个线程并行执行时,具有较高优先级的线程将获得较多的CPU时间片; (5)优先级是从0到10的整数,并且它仅表示线程之间的相对关系; (6)多个线程共享一组资源,有可能在运行时产生冲突。必须采用synchronized关键字协调资源,实现线程同步。 8.2 线程类 8.2.1 多线程编程中常用的常量和方法 8.2.2 线程的生命周期 8.2.3 创建多线程的方法 8.2.1 多线程编程中常用的常量和方法 Thread类包含的常量有: 1. public static final int MAX_PRIORITY: 最大优先级,值是10。 2. public static final int MIN_PRIORITY: 最小优先级,值是1。 3. public static final int NORM_PRIORITY:缺省优先级,值是5。 8.2.1 多线程编程中常用的常量和方法 常用方法: currentThread( ):返回当前运行的线程对象,是一个静态的方法。 sleep(int n) : 使当前运行的线程睡n个毫秒,然后继续执行,也是静态方法。 yield( ) :使当前运行的线程放弃执行,切换到其它线程,是一个静态方法。 isAlive( ) : 判断线程是否处于执行的状态,返回值true表示处于运行状态,false表示已停止。 start( ) :使调用该方法的线程开始执行。 run( ) :该方法由start( )方法自动调用。 8.2.1 多线程编程中常用的常量和方法 常用方法: stop( ) :使线程停止执行,并退出可执行状态。 suspend(): 使线程暂停执行,不退出可执行态。 resume( ) : 将暂停的线程继续执行。 setName(String s) :赋予线程一个名字。 getName( ) :获得调用线程的名字。 getPriority( ) :获得调用线程的优先级。 setPriority(int p) :设置线程的优先级。 join( ) :等待线程死亡,若中断了该线程, 将抛出异常。 【实例8-1】 class getThreadInfo { public static void main(String args[ ]) { Thread curr; int num=7; curr=Thread.currentThread( ); curr.setPriority(num); System.out.println(当前线程: +curr); System.out.println(线程名: + curr.getName( )); System.out.println(优先级 :+ curr.getPriority( )); } } 程序输出结果: 当前线程: Thread[main,7,main] 线程名 : main 优先级 :7 8.2.2 线程的生命周期 Java支持一种“抢占式”(preemptive)调度方式 “Newborn”(新建)状态: 线程在己被创建但未执行这段时间内,处于一个特殊的Newborn状态,这时,线程对象己被分配内存空间,其私有数据己被初始化,但该线程还未被调度。此时线程对象可通过start()方法调度,或者利用stop()方法杀死.新创建的线程一旦被调度,就将切换到Runnable状态。 8.2.2 线程的生命周期 Runnable(就绪)状态: 表示线程正等待处理器资源,随时可被调用执行。处于就绪状态的线程事实上己被调度,也就是说,它们己经被放到某一队列等待执行。处于就绪状态的线程何时可真正执行,取决于线程优先级以及队列的当前状况。线程的优先级如果相同,将遵循先来先服务的调度原则。 8.2.2 线程的生命周期 “Running”(运行)状态: 表明线程正在运行,该线己经拥有了对处理器的控制权,其代码目前正在运行。这个线程将一直运行直到运

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档