第六周学习总结

异常
异常的概念:程序在运行过程中出现的特殊情况。
异常的分类:可抛出的,一切错误或异常的父类,位于java.lang包中。
|-Error:JVM、硬件、执行逻辑错误,不能手动处理;
|-Exception:程序在运行和配置中产生的问题,可处理;
|-RuntimeException:运行时异常,可处理,可不处理;
|-CheckedException:受查异常,必须处理。
异常的产生:
1、自动抛出异常:当程序在运行时遇到不符合规范的代码或结果时,会产生异常;
2、手动抛出异常:语法:throw new 异常类型(“实际参数”);
3、产生异常结果:相当于遇到return语句,导致程序因异常而终止。
异常的传递:按照方法的调用链反向传递,如始终没有处理异常,最终由JVM虚拟机进行默认异常处理。
受查异常:throws 声明异常,修饰在方法参数列表后面。
运行时异常:因可处理可不处理,无需声明异常。
自定义异常:
1、需继承自Exception或Exception子类;
2、必须提供无参构造方法和String mssage有参构造方法。
带有异常声明的方法覆盖:
1、方法名、参数列表、返回值类型必须和父类相同;
2、子类的访问修饰符和父类相同或比父类宽泛;
3、子类方法中不能比父类抛出更多、更宽的异常。

多线程
线程的创建方式:
1、第一种创建方式:
1)继承Thread类;2)覆盖父类run方法;3)创建子类对象;4)调用父类start()方法。
(如:Thread t = new MyThread();)
2、第二种创建方式:
1)实现Runnable接口;2)覆盖接口run方法;3)创建实现类对象;4)创建线程对象;
5)调用start()方法。
(如:Thread t = new Thread(new MyThread());)
线程安全问题:
1、当多线程并发访问临界资源时,如果破坏原子操作,可能会导致数据不一致;
2、临界资源:共享资源(同一对象),一次允许一个线程使用,才可保证其正确性;
3、原子操作:不可分割的多步操作,被视作一个整体,其顺序和步骤不可打乱或缺省。
解决线程安全问题方式:
1、同步代码块:
synchronized(临界资源对象){
(原子操作)
}
2、同步方法:
synchronized 返回值类型 方法名称(形参列表){
(原子操作)
}
通信线程:
等待:public final void wait()
通知:public final void notify()
线程池:
1、线程容器,可设定线程分配的数量上限;
2、将预先创建的线程对象存入池中,并重用线程池中的线程对象;
3、避免频繁的创建和销毁。
获取线程池:
ExecutorService:线程池接口,可通过submit(Runnable task)提供任务代码;
Executors工厂类:通过此类可以获得一个线程池。
Callable接口与Runnable接口类似,实现之后代表一个线程任务,具有泛型返回值,可以声明异常。
线程的同步:
形容一次方法调用,同步一旦开始,调用者必须等待该方法返回,才能继续。
线程的异步:
形容一次方法调用,异步一旦开始,像是一次消息传递,调用者告知之后立刻返回;二者竞争时间片,并发执行。
线程的状态:
分为初始状态、就绪状态、运行状态、阻塞状态、限期状态、无限期状态、终止状态。
Lock接口:
提供更多实用性方法,功能更强大、性能更优越。
常用方法:void lock()获取锁、void unlock()释放锁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值