Chapter7_多线程与异常处理.ppt

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

第7章 多线程与异常处理 1、多线程的概念 2、线程的使用 3、线程同步 4、异常处理 7.1 多线程的概念 1、线程与多线程 2、线程的生命周期 3、线程的优先级 1、线程与多线程 什么是进程 进程是程序的一次执行 进程是程序在一个数据集合上运行的过程。进程是系统资源分配和调度的独立单位。 什么是线程 在多线程的操作系统中,一个进程中包含多个线程。 线程是独立运行的基本单位。 进程作为资源分配的基本单位。同一进程的多个线程共享该进程所拥有的资源。 进程与多线程的区别 Java的多线程机制 在Java编程中,每实例化一个线程对象,就创建一个虚拟的CPU,由虚拟CPU处理本线程数据。  每个Java程序都有一个主线程,即由main()方法所对应的线程。对于applet,浏览器即是主线程。 除主线程外,线程无法自行启动,必须通过其他程序来启动它。 2、线程的生命周期 线程要经历创建、就绪、运行、阻塞和死亡等5个状态 ,称为生命周期。 创建状态 通过new命令创建一个线程对象,创建后的线程就处于创建状态。 Thread thread1=new Thread(); 就绪状态 处于创建状态的线程对象通过调用start()方法就进入了就绪状态。 Thread thread1=new Thread(); thread1.start(); 进入就绪状态的线程对象被放到一个等待队列中,等待系统为其分配对处理器的控制权。 运行状态 线程处于运行状态,该进程对应的代码目前正在运行。除非运行过程中对处理器的控制权被一个优先级更高的线程抢占,否则该线程将一直运行完毕然后释放对处理器的控制权。 run() 阻塞状态 正在运行的线程由于发生某事件而暂时无法继续执行时,便放弃处理器处于暂停状态。这种暂停状态称为阻塞状态。常见的导致线程阻塞的典型事件为:I/O请求,申请缓冲空间等。 sleep(),wait()方法 当I/O完成,获得缓冲空间后,线程就由阻塞状态转变为就绪状态。 死亡状态 线程执行完毕或被另一线程强行终止执行,线程退出运行状态,并不再进入就绪队列。 run()方法执行结束,线程会被撤销。 执行System.exit()方法强行退出,导致进程强行终止 3、线程的优先级 Java提供一个线程调度器来监控进入就绪状态的所有线程。 线程调度器根据线程的优先级决定调度哪个线程执行。 线程的执行方式: 时间片方式 非时间片方式(独占式) 在Java中,线程优先级的范围为1~10,即Thread.MIN_PRIORITY到Thread.MAX_PRIORITY。默认优先级为5,即Thread.NORM_PRIORITY。getPriority()方法可以获得线程的优先级 setPriority()方法可以设置线程的优先级 7.2  线程的使用方法 1、创建Thread子类构造线程 2、实现Runnable接口构造线程 基本方法: 创建线程类子类,再用其他类调用 线程。 1、创建Thread子类构造线程 线程的创建与启动 (1)创建一个Thread类的子类; Thread类位于java.lang包中 (2)在子类中父类中的run()方法,run()方法中包含了线程要实现的操作; (3)用关键字new 创建一个线程对象; (4)调用start()方法启动线程。线程启动后当执行完run()方法后,线程会进入死亡状态。 示例 【例7-1】  创建二个Thread类的子类,然后测试它。 这个例子说明了这样几个事实: (1)创建独立执行线程比较容易,Java负责处理了大部分细节。 (2)各线程并发运行,共同争抢CPU资源,线程抢夺到CPU资源后,就开始执行,无法准确知道某线程能在什么时候开始执行。 (3)线程间的执行是相互独立的。 (4)线程独立于启动它的线程(或程序)。 线程的暂停与恢复 public static void sleep(long?millis) : 线程休眠millis毫秒。 public static void sleep(long?millis, int?nanos) 线程休眠millis毫秒及nanos纳秒。 Thread thread1 = new Thread(); thread1.start(); try { thread1.sleep(200,100); } catch(InterruptedException e) { } yield():暂停当前正在执行的线程对象,并执行其他线程。 wait():使线程进入等待状态直到被另一进程唤醒。 notify():把线程的变化通知并唤醒等待的某个线程。 2、 实现Runnable接口构造线程 Runnable接口: 位于java.lang包中,定义如下

您可能关注的文档

文档评论(0)

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

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档