黑马程序员技术交流社区

标题: 3.28 [打印本页]

作者: 枷档不弯    时间: 2019-3-28 12:36
标题: 3.28
注意:
        1.try中可能会抛出多个异常对象,那么就可以使用多个catch来处理这些异常对象
        2.如果try中产生了异常,那么就会执行catch中的异常处理逻辑,执行完毕catch中的处理逻辑,继续执行try...catch之后的代码
        如果try中没有产生异常,那么就不会执行catch中异常的处理逻辑,执行完try中的代码,继续执行try...catch之后的代码

finally代码块
     格式:
        try{
            可能产生异常的代码
        }catch(定义一个异常的变量,用来接收try中抛出的异常对象){
            异常的处理逻辑,异常异常对象之后,怎么处理异常对象
            一般在工作中,会把异常的信息记录到一个日志中
        }
        ...
        catch(异常类名 变量名){

        }finally{
            无论是否出现异常都会执行
        }
注意:
1.finally不能单独使用,必须和try一起使用
        2.finally一般用于资源释放(资源回收),无论程序是否出现异常,最后都要资源释放(IO)

子父类的异常:
        如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。
        父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出
注意:父类异常时什么样,子类异常就什么样

Day06:多线程
并发:指两个或多个事件在同一个时间段内发生。
并行:指两个或多个事件在同一时刻发生。
进程:是指一个内存中正在运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。
线程:是进程中负责程序执行的执行单元。也称执行路径。
一个进程中至少有一个线程在负责该进程的运行。
如果一个进程中出现了多个线程,就称该程序为多线程程序。
线程调度:分时调度和抢占式调度
分时调度:所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。
抢占式调度:优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。

多线程技术:解决多部分代码同时执行的需求。合理的使用cpu资源。
多线程的运行是根据cpu的切换完成的。具体怎么切换cpu说了算。所以多线程运行有一个随机性(cpu的快速切换造成的)。
jvm中的多线程:至少有两个线程,一个是负责自定义代码运行的(主线程),一个是负责垃圾回收的。
每一个线程都有运行的代码内容,这个称为线程的任务。之所以创建一个线程就是为了去运行指定的任务代码。而线程的任务都封装在特定的区域中。比如:主线程运行的任务都定义在main方法中,垃圾回收线程在收垃圾都会运行fanalize方法。
Java使用 java.lang.Thread 类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。Java使用线程执行体来代表这段程序流。
如何建立一个执行路径?
创建线程的两种方式:
1.继承Thread类(java.lang.Thread类:是描述线程的类,我们想要实现多线程程序,就必须继                                                承Thread类)
a.继承Thread类
b.覆盖run方法(设置线程任务)
c.创建子类对象就是创建线程对象
d.调用Thread类中的start方法就可以执行线程。并会调用run方法。
void start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。结果是两个线程并发地运行;当前线程(main线程)和另一个线程(创建的新线程,执行其 run 方法)。多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。
java程序属于抢占式调度,那个线程的优先级高,那个线程优先执行;同一个优先级,随机选择一个执行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2