- 1、本文档共74页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java实用教程 第7章 多线程与异常处理 第7章 多线程与异常处理 7.1 线 程 概 述 7.2 线程的创建 7.3 线程的生命周期 7.4 线程的优先级 7.5 线程的控制 7.6 线程的同步 7.7 线 程 通 信 7.8 多线程产生死锁 7.9 异 常 7.2 线程的创建 在Java语言中,线程也是一种对象,但并非任何对象都可以成为线程,只有实现Runnable接口或继承了Thread类的对象才能成为线程。 Thread类 Thread类中的主要的方法包括: start()方法 interrupt()方法 join()方法 run()方法。 其中start()方法与run()方法最为常用,start()方法用于启动线程,run()方法为线程的主体方法,可以根据需要重写run()方法。 Thread类 Thread类有4个最常用构造方法。 (1)默认构造方法 默认的构造方法,没有参数列表。语法格式为: (2)基于Runnable对象的构造方法 该构造方法包含了Runnable类型的参数,它是实现Runnable接口的类的实例对象,基于该构造方法创建的线程对象,将线程的业务逻辑交由参数所传递的Runnable对象去实现。语法格式为: simple:实现Runnable接口的对象 Thread类 (3)指定线程名称的构造方法 该构造方法包含了String类型的参数,这个参数将作为新创建的线程对象的名称。语法格式为: (4)基于Runnable对象并指定线程名称的构造方法 该构造方法接收Runnable对象和线程名称的字符串。语法格式为: simple:实现Runnable接口的对象。 name:线程名称。 Runnable接口 实现Runnable接口的类就可以成为线程,Thread类就是因为实现了Runnable接口所以才具有了线程的功能。 Runnable接口只有一个方法就是run()方法,实现Runnable()接口后必须实现run()方法。 7.2.2 继承Thread类 在Java语言中要实现线程功能,可以继承java.lang.Thread类,这个类已经具备了创建和运行线程的所有必要架构,通过重写Thread类中run()方法,以实现用户所需要的功能,实例化自定义的Thread类,使用start()方法启动线程。 【例7-1】 7.2.3 实现Runnable接口 从本质上讲,Runnable是Java语言中用以实现线程的接口,任何实现线程功能的类都必须实现这个接口。 Thread类就是因为实现了Runnable接口,所以继承它的类才具有了相应的线程功能。 实现Runnable接口 虽然可以使用继承Thread类的方式实现线程,但是由于在Java语言中,只能继承一个类,如果用户定义的类已经继承了其他类,就无法再继承Thread类,也就无法使用线程,于是Java语言为用户提供了一个接口,java.lang.Runnable,实现Runnable这个接口与继承Thread类具有相同的效果,通过实现这个接口就可以使用线程。 Runnable接口中定义了一个run()方法,在实例化一个Thread对象时,可以传入一个实现Runnable接口的对象作为参数,Thread类会调用Runnable对象的run()方法,继而执行run()方法中的内容。 【例7-2】 7.3 线程的生命周期 线程主要有以下状态: 创建 可执行 非可执行 消亡 创建 当实例化一个Thread对象并执行start()方法后,线程进入“可执行”状态,开始执行,虽然多线程给用户一种同时执行的感觉,但事实上在同一时间点上,只有一个线程在执行,只是线程之间转换的动作很快,所以看起来好像同时在执行一样。 可执行 当线程启用start()方法后,进入“可执行”状态,执行用户覆写的run()方法。 一个线程进入“可执行”状态下,并不代表它可以一直执行到run()结束为止,事实上它只是加入此应用程序执行安排的队列中,也就是说,这个线程加入了进程的线程执行队列中,对于大多数计算机而言,只有一个处理器,无法使多个线程同时执行,这时需要合理安排线程执行计划,让那些处于“可执行”状态下的线程合理分享CPU资源。 所以,一个处在“可执行”状态下的线程,实际上可能正在等待取得CPU时间,也就是等候执行权,在何时给予线程执行权,则由Java虚拟机和线程的优先级来决定。 非可执行 在“可执行”状态下,线程可能被执行完毕,也可能没有执行完毕,处于等待执行权的队列中,当使线程离开“可执行”状态下的等待队列时,线程进入“非可执行”状态。 可以使用Thread类中的wait()、sleep()方法使线程进入“非可执行”状态
您可能关注的文档
- 新Java Web程序设计教程 教学课件 范立锋 林果园 第1章 Web应用开发简介.ppt
- 新Java Web程序设计教程 教学课件 范立锋 林果园 第13章 Spring与Java EE持久化数据访问.ppt
- 新Java Web应用技术与案例教程 教学课件 杨树林 胡洁萍 第三章 设计模式与分层架构.ppt
- 新Java 程序设计 教学课件 朱喜福 林建民 唐永 第01章.ppt
- 新Java 程序设计项目教程(教育部高职高专计算机教指委规划教材) 教学课件 张兴科 季昌武 项目五.ppt
- 新JavaScript程序设计基础教程 第2版 普通高等教育“十一五”国家级规划教材 教学课件 阮文江 第七章 对象编程1.ppt
- 新JavaScript程序设计基础教程 教学课件 曾海 第9章 CSS+DIV技术.ppt
- 新JavaScript脚本程序设计 教学课件 吴以欣 陈小宁 第3章 JavaScript常用内置对象.ppt
- 新Java编程与应用教程 教学课件 张莉 java_03.ppt
- 新Java编程与应用教程 教学课件 张莉 java_11.ppt
文档评论(0)