Java学习第六周总结

异常:
1、什么是异常
I.程序在运行过程中出现的特殊情况。
II.异常处理的必要性:任何程序都可能存在大量的未知问题、错误;如果不对这些问题进行正确处理,则可能导致程序的中断,造成不必要的损失。

2、异常的分类:
I-Throwable:可抛出的,一切错误或异常的父类。位于java.lang包中。
|-Error:JVM、硬件、执行逻辑错误,不能手动处理。
|-Exception:程序在运行和配置过程中产生的问题,可处理。
|-RuntimeException:运行时异常,可处理,可不处理。
|-CheckedException:受查异常,必须处理。

3、异常的产生:
I.自动抛出异常:当程序在运行时遇到不符合规范的代码或结果时,会产生异常。
II.手动抛出异常:throw new 异常类型(“实际参数”);
III.一旦产生异常结果:相当于执行return语句,导致程序因异常而终止。

4、异常的传递:
I.按照方法的调用链反向传递,如果最终都没有处理异常,最终交由我们的JVM进行默认异常处理(打印堆栈跟踪信息)
II.受查异常:throws 声明异常,声明位置:修饰在方法参数列表的后端。
III.运行时异常:因其可处理,可不处理,无需声明。

5、异常的处理
I.try{
//可能出现异常的代码
}catch(Exception e){
//捕获异常后,对异常处理的相关代码。处理方案:1、自定义2、printStackTrace();3、getMessage();
}finally{
//无论是否出现异常,都需要执行的代码。 常用于释放资源.
}

II.常见异常处理结构
(1)try{ }catch(){}
(2)try{}catch(){}catch(){}
(3)try{}catch(){}finally{}
(4)Try{}catch(){}catch(){}finally{}
(5)try{}finally{}
注意:多重catch下,遵循从子到父的顺序,父类异常在最后捕获

6、自定义异常
I.继承Exception(受查异常)或Exception的子类。常用RuntimeException.(运行时异常)
II.必要提供的内容
(1).无参构造方法
(2)String message参数的构造方法。定义异常原因信息

7、异常方法覆盖
I.方法名、参数列表、返回值类型必须和父类相同
II.子类的访问修饰符和父类相同或比父类更宽泛
III.子类中的方法,不能抛出比父类更宽泛的异常。
8、扩充:方法执行中字节码操作指令
I.反编译:javap -verbose 文件名称(是.class) > 自定义文件名称.bytecode

作业:3.9:Question_11(1、2、3、4、7、9、11、13、14)
3.10:Question_11(剩余的)+课堂案例(自定义异常、异常方法覆盖、字节码操作指令)、多线程预习(部分)。

多线程:
1、进程
I.运行时的程序,称为进程。
II.单核CPU在任一时间点上,只能运行一个进程。
III.宏观并行、微观串行
IV. cpu get NumberOfCores 获得核心数
2、线程
I.轻量级进程
II.程序中的一个顺序控制流程,也是CPU的基本调度单位。
III.进程可以由单个或多个线程组成,彼此间完成不同的工作,交替执行,称为多线程
IV.JVM虚拟机是一个进程,默认包含主线程(Main函数),可以通过代码创建多个独立线程,与Main线程并发执行。
3、线程的组成:
I.CPU时间片
II. 运行数据:
(1).堆空间:存储线程需要使用的对象,多个线程可以共享堆中的对象
(2).栈空间:存储线程需要使用的局部变量,每个线程都拥有独立的栈
4、线程的创建
I.继承Thread类,自定义类变成线程类
II.实现Runnable接口,赋予自定义类线程任务的能力。
III.实现Runnable接口,不影响类继承,更灵活。
IV.线程创建后,需要调用start();方法,来启动线程,由JVM调用run()方法。直接调用run()方法并不是线程的启动。
5、线程的状态(基本)
6、线程常见方法
I.休眠 sleep(long millis);
(1).当前线程主动休眠 millis毫秒,进入有限期等待!
II. 放弃 yield();
(1).当前线程主动放弃时间片,回到就绪状态,竞争下一次时间片
III. 结合 join();
(1).允许其他线程加入到当前线程中,当前线程进入无限期等待!
7、线程的状态(等待)
8、线程安全的问题
I. 当多线程并发访问临界资源时,如果破坏了原子操作,可能会导致数据不一致。
II. 临界资源:共享资源(同一对象、堆空间),一次仅允许一个线程使用,才可保证其正确性
III.原子操作:不可分割的多步操作,被视作为一个整体,其顺序和步骤不能打乱或缺省。
9、synchronized 同步锁
I.每个对象都有一个互斥锁标记,用来分配给线程。
II.只有持有对象互斥锁标记的线程,才能进入对该对象加锁的同步操作中(同步方法、同步代码块)。
III.只有线程退出同步操作时,才会释放相应的锁标记
10、同步方式
I.同步代码块
(1). synchronized(临界资源对象){
//原子操作
}
II.同步方法
(1). synchronized 返回值类型 方法名成(参数列表){
//原子操作
}
11、线程的状态(阻塞)
12、同步规则
I.只有在调用包含同步代码块的方法或者是同步方法时,才需要对象的锁标记
II.如果调用的是不包含同步代码块的方法或普通方法时,则不需要锁标记,直接调用即可。
III.已知线程安全的内容:StringBuffer、Vector、Hashtable
13、死锁、生产者与消费者
14、线程通信
I.等待
(1)wait();
(2) 必须在对obj(对象)加锁的同步代码块(或同步方法)中,在一个线程执行期间,调用了obj.wait(),该线程会释放所拥有的锁标记。同时,进入到obj的等待队列中。等待唤醒
II. 通知(唤醒)
(1).notify();、notifyAll();
(2).必须在对obj加锁的同步代码块(或同步方法)中,从obj的Waiting(等待队列)中随机释放一个或全部线程。对自身无影响。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值