没有合适的资源?快使用搜索试试~ 我知道了~
首页Java多线程与异常处理深度解析:71页精华
Java多线程与异常处理深度解析:71页精华
0 下载量 105 浏览量
更新于2024-06-29
收藏 341KB PPTX 举报
"多线程与异常处理是一门深入理解现代软件并发性和错误管理的关键技术。这个71页的PPT涵盖了以下几个主要知识点: 1. 多线程基础:首先,讲解了多线程的基本概念,包括多任务的两种形式——基于进程和基于线程。线程被定义为程序内部的顺序执行流,与进程相比,线程在同一程序内共享内存,降低了上下文切换的开销,提高了并发性。 2. 进程与线程的关系:区分了进程和线程的概念,指出线程是进程内的独立执行单元,但不等同于独立的进程。进程间的隔离性和资源分配使得它们各自独立,而线程则更侧重于代码并行执行。 3. Java中的多线程:Java以其对多线程的支持为特点,Thread类是实现多线程的核心工具。Java线程由代码段、数据段和线程控制块组成,线程的执行顺序和数据共享机制是Java设计的重要考量。 4. 创建线程的方式:介绍了两种创建线程的方法,即继承Thread类或实现Runnable接口。这两种方式都允许程序员定义线程的行为和任务。 5. 异常处理:强调了异常处理的重要性,包括深入理解异常的基本概念,Java平台的异常类体系,以及如何创建自定义异常类。正确处理异常能够使程序更加健壮,避免因未预期情况导致的程序崩溃。 6. 异常捕获与恢复:讲解了如何运用异常处理结构(如try-catch-finally),以确保在遇到异常时程序能够正常执行,而不是立即终止。这涉及到如何编写鲁棒的Java程序,确保即使在错误情况下也能提供有用的反馈。 通过学习这一章节,学生能够掌握如何在Java中有效地管理并发和错误,这对于编写高效、健壮的多线程应用程序至关重要。"
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/87016730/bgc.jpg)
1 多线程的基本概念
必要时,用户可对其处理(chǔlǐ)。
在进行程序设计时,错误的产生是不可避免的,比如溢出、数组越界、文件找不到等,发生这些事件将阻止程序的正常运行。
if (gotEnoughMemory) {
public class OutOfRangeException extends Exception{
FileNotFoundException
myMethod1()调用myMethod2()时,应该按如下方式进行:
对非运行时异常必须捕获或声明。
程序(chéngxù)区段
在进行程序设计时,错误的产生是不可避免的,比如溢出、数组越界、文件找不到等,发生这些事件将阻止程序的正常运行。
当自定义异常是从Throwable、Exception及其它非RuntimeException类的异常类继承而来时,该自定义异常是编译时异常,也即程序中必
须捕获并处理它。
本章(běn zhānɡ)练习
创建自定义异常时,一般需要完成如下工作:
如果在上层的所有方法中都找不到合适的catch块匹配,则由Java运行系统来处理这个异常对象。
Thread myThread = new MyThreadClass();
myThread.start();
try{
myThread.sleep(10000);
} catch (InterruptedException e){ }
阻塞状态(Blocked)
线程处于可运行状态时,当下面四种情况发生,线程
就进入不可运行状态:
调用了休眠方法sleep( )或yield() 方法;
调用了挂起方法suspend( );
为等候一个(yī ɡè)条件变量,线程调用等待方法wait()
;
输入输出流中发生线程阻塞。
12
第十二页,共71页。
![](https://csdnimg.cn/release/download_crawler_static/87016730/bgd.jpg)
对于这四种使得线程处于不可运行状态的情况,都有特定
的方法使线程返回可运行状态:
如果线程处于休眠(xiūmián)状态中,sleep()方法中的参数为
休眠(xiūmián)时间,当这个时间过去后,线程即为可运行的
;
如果线程在等待条件变量,那么要停止等待的话,需要该
条件变量所在的对象调用notify()或notifyAll()方法;
如果在I/O流中发生线程阻塞,则特定的I/O指令将结束这种
不可运行状态。
需要注意的是每种方法都仅仅对相应的状态才有作用,例
如当一个线程休眠(xiūmián)并且休眠(xiūmián)时间还没有
结束时,调用其他方法是无效的,并且还会引起非法状态异
常。
13
第十三页,共71页。
![](https://csdnimg.cn/release/download_crawler_static/87016730/bge.jpg)
死亡状态(Dead)
线程的终止一般可通过两种方法实现:自然撤消或强行
终止。
自然撤消是指从线程的run( )方法正常结束退出,如果希
望线程正常终止,一般可使用某种手段来使线程中的
run()方法结束执行。
调用线程的实例方法stop( )则可以强制停止当前线程。既
可以在其他线程中调用该线程的stop()方法来终止,也可
以由线程自己(zìjǐ)调用stop()方法,自我终止。但这个方
法已在JDK2中建议不再使用,应当避免使用。
14
第十四页,共71页。
![](https://csdnimg.cn/release/download_crawler_static/87016730/bgf.jpg)
每个线程各自任务的重要程度不同而可能有不同的优先
级。
Java提供一个线程调度器来监控(jiān kònɡ)程序中进入就绪
状态的所有线程。线程调度器按照线程的优先级决定调度线
程的执行。
多个线程运行时,具有高优先级的线程会在较低优先级的
线程之前得到执行。
线程的调度是抢先式的,一个具有更高优先级的线程进入
可执行状态,则该高优先级的线程会被立即调度执行。
同一优先级的线程,采取先进先出的原则由操作系统按时
间片轮转方式或独占方式来分配线程的执行时间。
15
第十五页,共71页。
剩余70页未读,继续阅读
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
Mmnnnbb123
- 粉丝: 734
- 资源: 8万+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- Vue实现iOS原生Picker组件:详细解析与实现思路
- Arduino蓝牙小车:参数调试与功能控制
- 百度Java面试精华:200页精选资源涵盖核心知识点
- Swift使用CoreData填坑指南:CoreData在Swift 3.0的变化
- 微距离无线充电器创新设计及其实验探索
- MTK Android平台开发全攻略:44步详解流程
- RecyclerView全面解析:替代ListView的新选择
- Android开发:自动适配中英文键盘解决方案
- Android调用WebService接口教程
- Android开发:BitmapUtil图片处理全解析与实例
- Android多线程断点续传实现详解
- PCA算法在人脸识别会议签到系统中的应用
- EventBus 3.0:Android事件总线详解与实战应用
- Android FileUtil:全面解析文件操作实用技巧与实例
- RecyclerView添加头部和尾部实战教程
- Android实现微博滑动固定顶部栏实战与优化
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)