第十章: 异常,线程

  1. 指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止

  2. 异常体系

    1. java.lang.Throwable

      1. java.lang.Error
      2. java.lang.Exception

      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  3. Throwable中的常用方法*

    1. public void printStackTrace() JVM打印异常对象,默认此方法,打印的异常信息是最全面的
    2. public String getMessage() 获取发生异常的原因
    3. public String toString() 获取异常的类型和异常描述信息

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  4. throw关键字

    1. throw关键字必须写在方法的内部
    2. throw关键字后边new的对象必须是Exception或者Exception的子类对象
    3. throw关键字抛出指定的异常对象,我们就必须处理这个异常对象
  5. Object类 主要查看指定引用对象不是null

    1. 对传递过来的参数进行合法性判断是否为null
  6. finally代码块

    1. finally不能单独使用,必须和try一起使用
    2. finally一般用于资源释放(资源回收),无论程序是否出现异常,最后都要资源释放(IO)
  7. 自定义异常:

    1. public class XXXExcepiton extends Exception | RuntimeException{ 添加一个空参数的构造方法 添加一个带异常信息的构造方法 }
    2. 自定义异常类一般都是以Exception结尾,说明该类是一个异常类
    3. 自定义异常类,必须的继承Exception或者RuntimeException
      1. 继承Exception:那么自定义的异常类就是一个编译期异常,如果方法内部抛出了编译期异常,就必须处理这个异常,要么throws,要么try…catch
      2. 继承RuntimeException:那么自定义的异常类就是一个运行期异常,无需处理,交给虚拟机处理(中断处理)
  8. 线程和进程

    1. 线程:指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多

      个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创

      建、运行到消亡的过程

    2. 进程:是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程

      中是可以有多个线程的,这个应用程序也可以称之为多线程程序

    3. 创建线程类:

      1. java.lang.Thread
      2. 调用Thread类中的方法start方法,开启新的线程,执行run方法 void start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。 结果是两个线程并发地运行;当前线程(main线程)和另一个线程(创建的新线程,执行其 run 方法)。 多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。 java程序属于抢占式调度,那个线程的优先级高,那个线程优先执行;同一个优先级,随机选择一个执行
      3. 多线程执行时,在栈内存中,其实每一个执行线程都有一片自己所属的栈内存空间。进行方法的压栈和弹栈;当执行线程的任务结束了,线程自动在栈内存中释放了。但是当所有的执行线程都结束了,那么进程就结束了
      4. java.lang.Runnable
        1. 创建Thread类对象,调用start方法:用来开启新线程

        2. Runnable接口可以实现线程池

          public class Demo3 implements Runnable{
              @Override
              public void run(){
                  for (int i = 0; i < 5; i++) {
                      System.out.println(Thread.currentThread().getName()+"+++"+i);
          
                  }
              }
          }
          
          public class Demo3MyRunnable {
              public static void main(String[] args) {
                  Demo3 run_able = new Demo3();
                  Thread testdemo3 = new Thread(run_able, "run_able");
                  testdemo3.start();
                  new Thread(run_able, "run_able2").start();
                  new Thread(run_able, "run_able3").start();
          
              }
          
          }
          
          
        3. 解决线程安全问题的一种方案:同步锁机制

          1. 通过代码块中的锁对象,可以使用任意的对象
          2. 但是必须保证多个线程使用的锁对象是同一个
          3. 锁对象作用:把同步代码块锁住,只让一个线程在同步代码块中执行
        4. 解决线程安全问题的一种方案:Lock锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值