我是靠谱客的博主 鳗鱼钢笔,最近开发中收集的这篇文章主要介绍第六周心得总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本周是第六周学习,这周已经解束了,回忆一下本周学过的知识重点。

异常:

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

异常的分类:

Throwable:可抛出的,一切错误或异常的父类。位于java.lang包中。

  |-Error:JVM、硬件、执行逻辑错误,不能手动处理。

  |-Exception:程序在运行和配置过程中产生的问题,可处理。

|-RuntimeException:运行时异常,可处理,可不处理。

|-CheckedException:受查异常,必须处理。

异常的产生:

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

异常的传递:

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

自定义异常

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

异常方法覆盖

  1. 方法名、参数列表、返回值类型必须和父类相同
  2. 子类的访问修饰符和父类相同或比父类更宽泛

 

多线程:

进程:

  1. 运行时的程序,称为进程。
  2. 单核CPU在任一时间点上,只能运行一个进程。
  3. 宏观并行、微观串行

线程

  1. 轻量级进程
  2. 程序中的一个顺序控制流程,也是CPU的基本调度单位。
  3. 进程可以由单个或多个线程组成,彼此间完成不同的工作,交替执行,称为多线程
  4. JVM虚拟机是一个进程,默认包含主线程(Main函数),可以通过代码创建多个独立线程,与Main线程并发执行。

线程的组成:

  I.CPU时间片

  II. 运行数据:

(1).堆空间:存储线程需要使用的对象,多个线程可以共享堆中的对象

(2).栈空间:存储线程需要使用的局部变量,每个线程都拥有独立的栈

线程的创建

  1. 继承Thread类,自定义类变成线程类
  2. 实现Runnable接口,赋予自定义类线程任务的能力。
  3. 实现Runnable接口,不影响类继承,更灵活。
  4. 线程创建后,需要调用start();方法,来启动线程,由JVM调用run()方法。直接调用run()方法并不是线程的启动。

线程常见方法

休眠  sleep(long millis);   当前线程主动休眠 millis毫秒,进入有限期等待!

放弃   yield(); 当前线程主动放弃时间片,回到就绪状态,竞争下一次时间片

结合   join(); 允许其他线程加入到当前线程中,当前线程进入无限期等待!

线程安全的问题

1.当多线程并发访问临界资源时,如果破坏了原子操作,可能会导致数据不一致。

2.临界资源:共享资源(同一对象、堆空间),一次仅允许一个线程使用,才可保证其正确性

3.原子操作:不可分割的多步操作,被视作为一个整体,其顺序和步骤不能打乱或缺省。

synchronized  同步锁

1.每个对象都有一个互斥锁标记,用来分配给线程。

2.只有持有对象互斥锁标记的线程,才能进入对该对象加锁的同步操作中(同步方法、同步代码块)。

3.只有线程退出同步操作时,才会释放相应的锁标记

同步规则

  1. 只有在调用包含同步代码块的方法或者是同步方法时,才需要对象的锁标记
  2. 如果调用的是不包含同步代码块的方法或普通方法时,则不需要锁标记,直接调用即可。
  3. 已知线程安全的内容:StringBuffer、Vector、Hashtable

线程通信

等待    wait();  

 必须在对obj(对象)加锁的同步代码块(或同步方法)中,在一个线程执行期间,调用了obj.wait(),该线程会释放所拥有的锁标记。同时,进入到obj的等待队列中。等待唤醒

 通知(唤醒)    .notify();、notifyAll();

      必须在对obj加锁的同步代码块(或同步方法)中,从obj的Waiting(等待队列)中随机释放一个或全部线程。对自身线程无影响。

最后

以上就是鳗鱼钢笔为你收集整理的第六周心得总结的全部内容,希望文章能够帮你解决第六周心得总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部