【异常,自定义异常,线程入门】

一.异常

   1.概念
        1)广义:指的是程序运行中发生的所有不正常的情况
        2)狭义:指的是java中的一个描述不正常的类Exception
   2.java的异常继承体系
          1)顶层父类:java.lang.Throwable(可抛出的)
          2)第一个子类:Error(错误)
                从代码层面,不能解决,只能规避
          3)第二个子类:Exception(异常)
                代码层面问题,可以解决或修改
   3.异常的分类
       1)java代码生命周期:
                   源码 -->编译 -->运行时
        2) 编译异常:
                     在编译时期,不处理,会编译报错的异常
                     典型:IOException
        3)运行时异常
                     在编译时期,不处理,不会编译报错的异常(发生在运行时)
                     0) 共同父类:RuntimeException
                     1)  NullPointException  空指针
                     2) IndexOutOfBoundsException:索引越界异常
                     3) ClassCastException 类型转换异常
                     4) IllegalArgumentException 非法参数异常
    4.处理异常的两种方式
             1. try...catch
             2. throws

二 自定义异常

   ## 1.抛出异常
            1)关键字:throw
            2)语法:throw 异常对象
            3)含义:表示异常对象会被抛出给方法的调用者
            4)使用场景:设计方法的时候,如果当前方法被非法调用,方法设计者可以直接抛出异常,以产生警示作用
            5)throw 和 throws区别
                I throws写在方法声明,只是表示此方法有可能有异常(声明)
                II throw + 异常对象:表示抛出一个异常对象给调用者(行为)
    ## 2异常的补充
            1)父类方法如果没有声明抛出编译异常,子类也不能声明
            2)父类方法声明抛出编译异常,子类是否声明都可以

三.多线程

       ## 1.进程和线程
                        0).基础概念
                                 一个软件启动,至少一个进程
                                 一个进程运行,至少一个线程
                         1)进程:
                                 统筹软件执行时需要的资源,进行资源调度
                         2)线程
                                   使用线程中的一部分资源,去完成运算
           2.并行和并发
                   1).并行:同一时间点,一起发生
                   2).并发:同一时间段,一起发生(常见)
           3. 总结
                      1) 线程:计算机中进行运算的最小单位
                                    一个线程只能执行一个任务
                                     如果需要同时执行多个任务,就需要多个线程 
                      2).线程并发:多个线程同时运行
                      3).线程执行:需要cpu调度(抢占式调度,随机性)        
           4.线程的创建方式
                  1) 线程的第一种创建方式:
                                I.一种方法是将类声明为Thread的子类
                                II.该子类应该重写Thread类的run方法
                                III.接下来可以分配并启动该子类的实例
                        ### start和run方法的区别
                                  如果我们直接调用线程对象的run方法,那么当前线程和普通对象米有任何区别。
                                  启动start,jvm会让线程就绪,只要cpu分配执行权,线程就会真正运行
                   2)线程的第二种创建方式
                                 I 声明实现Runnable接口的类
                                 II 该类然后实现run方法
                                 III 然后可以分配该类的实例,创建Thread时作为一个参数来创建并启动
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值