Java 2实用教程课件(线程).ppt

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

第九章 线程 目录 Java中的线程 线程的生命周期 Thread的子类创建线程 使用Runable接口 线程的常用方法 线程的优先级 线程同步 在同步方法中使用wait()、notify 和notifyAll()方法 挂起、恢复和终止线程 本章小结 线程的概念 进程和线程的区别 进程 一个独立程序的每一次运行称为一个进程,例如 用字处理软件编辑文稿时,同时打开mp3播放程序听音乐,这两个独立的程序在同时运行,称为两个进程 设置一个进程要占用相当一部分处理器时间和内存资源 大多数操作系统不允许进程访问其他进程的内存空间,进程间的通信很不方便,编程模型比较复杂 线程的概念(续) 线程 一个程序中多段代码同时并发执行,称为多线程 通过多线程,一个进程表面上看同时可以执行一个以上的任务——并发 创建线程比创建进程开销要小得多,线程之间的协作和数据交换也比较容易(进程独站资源) 线程间共享资源(内存、代码、数据)有利于并行处理 线程的状态与生命周期 新建:当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态。此时它已经有了相应的内存空间和其他资源。 就绪状态:线程等待 CPU 运行状态:start()方法开始执行 中断(阻塞)状态:sleep(), wait(), I/O 完成 or 发布 I/O 请求 sleep(): 使当前线程进入等待状态,参数设定其等待时间 wait(): 使当前线程进入等待状态,调用nofify(), or notifyAll(), 使其重新进入线程等待队列 死亡: run() 方法完成 stop() 方法被调用 线程的几种基本状态(续) 诞生状态 线程刚刚被创建 就绪状态 线程的 start 方法已被执行 线程已准备好运行 运行状态 处理机分配给了线程,线程正在运行 阻塞状态(Blocked) 在线程发出输入/输出请求且必须等待其返回 遇到用synchronized标记的方法而未获得其监视器暂时不能进入执行时 休眠状态(Sleeping) 执行sleep方法而进入休眠 死亡状态 线程已完成或退出 主线程:Java应用程序总是从主类的main()方法开始执行。当JVM加载代码,发现main方法之后,启动的线程称作“主线程”,该线程负责执行main方法。 在main方法的执行中再创建的线程,就称为程序中的其它线程。 如果main方法中没有创建其他的线程,那么当main方法执行完最后一个语句,JVM就会结束Java应用程序。 如果main方法中又创建了其他线程,那么JVM就要在主线程和其他线程之间轮流切换,main方法即使执行完最后的语句,JVM也不会结束程序,JVM一直要等到程序中的所有线程都结束之后,才结束我们的Java应用程序。 Thread类 Thread类 在Java程序中创建多线程的方法之一是继承Thread类 Thread类封装了Java程序中一个线程对象需要拥有的属性和方法 从Thread类派生一个子类,并创建这个子类的对象,就可以产生一个新的线程。这个子类应该重写Thread类的run方法,在run方法中写入需要在新线程中执行的语句段。这个子类的对象需要调用start方法来启动,新线程将自动进入run方法。原线程将同时继续往下执行 它位于java.lang包中,因而程序开头不用import任何包就可直接使用 例子:Example9_1.java Java中创建线程的两种方法 Thread 类的子类创建线程对象,子类重写Thread类中的run()方法 使用Thread类直接创建线程对象,但需要使用Runable接口 Thread类(续) 在新线程中完成计算某个整数的阶乘 public class Ex8_1 { public static void main( String [] args ) { System.out.println(main thread starts); FactorialThread thread=new FactorialThread(10); thread.start(); System.out.println(main thread ends ); } } class FactorialThread extends Thread { private int num; public FactorialThread( int num ) { this.num=num; } Thread类(续) public void run() { int i=num; int

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档