-
指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止
-
异常体系
-
java.lang.Throwable
- java.lang.Error
- java.lang.Exception
-
-
Throwable中的常用方法*
- public void printStackTrace() JVM打印异常对象,默认此方法,打印的异常信息是最全面的
- public String getMessage() 获取发生异常的原因
- public String toString() 获取异常的类型和异常描述信息
-
throw关键字
- throw关键字必须写在方法的内部
- throw关键字后边new的对象必须是Exception或者Exception的子类对象
- throw关键字抛出指定的异常对象,我们就必须处理这个异常对象
-
Object类 主要查看指定引用对象不是null
- 对传递过来的参数进行合法性判断是否为null
-
finally代码块
- finally不能单独使用,必须和try一起使用
- finally一般用于资源释放(资源回收),无论程序是否出现异常,最后都要资源释放(IO)
-
自定义异常:
- public class XXXExcepiton extends Exception | RuntimeException{ 添加一个空参数的构造方法 添加一个带异常信息的构造方法 }
- 自定义异常类一般都是以Exception结尾,说明该类是一个异常类
- 自定义异常类,必须的继承Exception或者RuntimeException
- 继承Exception:那么自定义的异常类就是一个编译期异常,如果方法内部抛出了编译期异常,就必须处理这个异常,要么throws,要么try…catch
- 继承RuntimeException:那么自定义的异常类就是一个运行期异常,无需处理,交给虚拟机处理(中断处理)
-
线程和进程
-
线程:指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多
个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创
建、运行到消亡的过程
-
进程:是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程
中是可以有多个线程的,这个应用程序也可以称之为多线程程序
-
创建线程类:
- java.lang.Thread
- 调用Thread类中的方法start方法,开启新的线程,执行run方法 void start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。 结果是两个线程并发地运行;当前线程(main线程)和另一个线程(创建的新线程,执行其 run 方法)。 多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。 java程序属于抢占式调度,那个线程的优先级高,那个线程优先执行;同一个优先级,随机选择一个执行
- 多线程执行时,在栈内存中,其实每一个执行线程都有一片自己所属的栈内存空间。进行方法的压栈和弹栈;当执行线程的任务结束了,线程自动在栈内存中释放了。但是当所有的执行线程都结束了,那么进程就结束了
- java.lang.Runnable
-
创建Thread类对象,调用start方法:用来开启新线程
-
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(); } }
-
解决线程安全问题的一种方案:同步锁机制
- 通过代码块中的锁对象,可以使用任意的对象
- 但是必须保证多个线程使用的锁对象是同一个
- 锁对象作用:把同步代码块锁住,只让一个线程在同步代码块中执行
-
解决线程安全问题的一种方案:Lock锁
-
-
第十章: 异常,线程
最新推荐文章于 2025-08-02 12:01:09 发布